黑马程序员技术交流社区
标题:
单例设计模式中实例化自身时,为什么没有造成死循环。
[打印本页]
作者:
郭孟涛
时间:
2013-7-1 16:43
标题:
单例设计模式中实例化自身时,为什么没有造成死循环。
class Single
{
private Single(){}
private static Singgle s = new single(); // 这里为什么没有造成死循环呢?
public static Single singleGet()
{
return s;
}
}
class SingleTest
{
public static void main(String[] args)
{
Single S = Single.singleGet();
}
}
复制代码
作者:
j816326
时间:
2013-7-1 16:57
调用的都是一个对象在堆内存中只有一个指向,private static Singgle s = new single(); 对象都指向了这个对象,这就是单利的特点啊。怎么会死循环呢
作者:
极限冰风
时间:
2013-7-1 17:07
public class Single {
//私有化构造函数
private Single(){}
//创建一个类的对象并使用private , static修饰;将对象私有化;
private static Single s=new Single();
//写一个方法向外提供一个对外使用对象的方法;
public static Single getInstance(){
return s;
}
}
复制代码
作者:
王广亚
时间:
2013-7-1 17:50
[code]class Single
{
private Single(){}
private static Singgle s = new single(); // 2、当执行到这句时在栈内存中会有一个s指向new single(); 在堆内存中开辟的空间。为什么你会想到循环呢?又不是循环语句
public static Single singleGet()
{
return s;
}
}
class SingleTest
{
public static void main(String[] args)
{
Single S = Single.singleGet(); //1、当调用了Single的.singleGet这个方法是Single这个类就被加载到内存
}
}
复制代码
[/code]
单例.png
(16.29 KB, 下载次数: 0)
下载附件
2013-7-1 17:47 上传
作者:
张承富
时间:
2013-7-1 17:55
是啊,单例模式的设计就是对象只创建一次,你还来死循环了,苍天啊大地啊,仔细看视频吧
作者:
孙百鑫
时间:
2013-7-1 18:23
问题解决请联系我
作者:
刘_鑫
时间:
2013-7-1 23:34
单例模式是为了保证对象的唯一性,不可能会有楼主说的死循环。
作者:
xkfxm
时间:
2013-7-7 10:26
单例设计模式中,你所问的是饿汉式。当外部类需要本类的对象时,只能通过这个类名调用本类的singleGet()方法,此时虚拟机会将single类文件加到内存;然后创建一个对象。其实当程序运行一次,在内存的静态区只有一个single对象,当这个类被加载是就会new一个对象。
简单地说就是Single s = new Single();这句话只执行一次,在类被加载时执行。他并不存在循环,所以更别说死循环
作者:
黑马龙子
时间:
2013-7-10 08:38
Single s = new Single();语句只执行一次,在类被加载时执行,在当执行到这句时在栈内存中会有一个s指向new single(); 同时在堆内存中会开辟的空间。这里不是循环语句,所以就不用去想死循环的问题。
作者:
1007087594
时间:
2014-5-30 08:53
唯一性的……怎么会死循环,而且你那个第二行调用对象时好像还写错了,多了一个g
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2