A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 殷士剑 中级黑马   /  2012-11-15 21:30  /  1289 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 殷士剑 于 2012-11-18 20:18 编辑

我们知道在单例模式中有一个指向自身的私有静态对象引用,那么它在内存中是怎样表示的呢?
private static Singleton instance = new Singleton();   

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 鼓励下

查看全部评分

3 个回复

倒序浏览
在方法区中,有一个Singleton 类型的引用instance 指向 ,堆内存中new Singleton()的地址。。  

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1

查看全部评分

回复 使用道具 举报
class Singleton
{
    //在内部产生本类的实例化对象,将属性封装
   private static Singleton instance = new Singleton();
   private Singleton(){}  //此处将构造方法进行封装
   public static Singleton getInatance()   //通过静态方法取得Singleton类的实例
   {
       return instance;
   }
}

public class SingleDemo
{
     public static void main(String args[])
    {
        Singleton s1 = Singleton.getInstance();   //访问类中的静态方法,取得对象实例
        Singleton s2 = Singleton.getInstance();

    }
}

以上程序中虽然声明了2个Singleton对象,但是实际上所有的对象都只使用instance的引用,即不管外面如何使用,最终结果只有一个实例化对象存在,内存占用情况如下图所示


评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
谢谢大家!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马