在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); //输出对象的散列码的十六进制 }}
上面这段代码,不仅说明了类类型的存储方式,同时反应了另一个问题:当初始化一个类类型的数组时,并没有给数组中的类类型的每个变量初始化,只是单纯的确认了数组的大小,相应的类类型变量需要另行初始化。
相关博文:java类类型参数:
java类类型变量: