Java类类型的存储特点

在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中两种单例模式小结 http://www.linuxidc.com/Linux/2013-05/84751.htm

单例模式(Singleton Pattern) http://www.linuxidc.com/Linux/2012-09/70555.htm

Java单例模式实例—读取配置文件 http://www.linuxidc.com/Linux/2012-01/51149.htm

Java单例模式(Singleton) http://www.linuxidc.com/Linux/2012-01/51148.htm

Java模式之单例模式 http://www.linuxidc.com/Linux/2011-12/50424.htm

Java基础之单例模式 http://www.linuxidc.com/Linux/2011-10/44922.htm

Java 中多线程下的单例模式 http://www.linuxidc.com/