在Java中,类类型变量初始化后存放的是对象的内存地址,不是对象本身,即类类型变量指向了对象的内存地址。但在java中,你没有办法看到对象的内存地址,通常所见到的“类型名@十六进制数”,并不是内存地址,只是该对象的散列码的十六进制表示而已。java语言本身是没有提供任何方法来查看内存地址的。关于加载类对象完全是由JVM来完成的,出于安全和方便的考虑,JVM管理内存对Java应用程序员是透明的。
通过下面代码,可以大概了解类类型的存储方式:
/**
* Comments:类类型的存储特点
* @author 塞上名猪
* Crete Time:2013-10-5
*
*/
public class Neicun {
public static void main(String[] args) {
Neicun[] n=new Neicun[3]; //初始化了一个数组,并没有对Neicun进行初始化
System.out.println(n[0]); //输出null
n[0]=new Neicun(); //调用构造函数进行初始化
System.out.println(n[0]); //n[0]指向的是内存地址,但输出的不是内存地址,只是该对象的散列码的十六进制表示而已
Neicun m=new Neicun();
System.out.println(m); //输出对象的散列码的十六进制
}
}
上面这段代码,不仅说明了类类型的存储方式,同时反应了另一个问题:当初始化一个类类型的数组时,并没有给数组中的类类型的每个变量初始化,只是单纯的确认了数组的大小,相应的类类型变量需要另行初始化。
推荐阅读: