黑马程序员技术交流社区
标题:
帮忙解释下两个代码的不同!!
[打印本页]
作者:
darkpiece
时间:
2014-1-23 21:15
标题:
帮忙解释下两个代码的不同!!
class Single
{
private static final Single S = new Single();
Single(){}
public static Single getInstance()
{
s = new Single();
return s;
}
}
class Single2
{
private static Single2 s = null;
private Single2(){}
public static Single2 getInstance()
{
if(s ==null)
s = new Single2();
return s ;
}
}
第一个代码是不是说final修饰了一个s对象,不能再在方法中定义s对象了。。
再帮忙解释下第二个代码。谢谢了
作者:
付江涛
时间:
2014-1-23 21:27
{:soso__16952254467664163835_3:}
表示还没学到。。。无能为力。。。
捧个人场~~
作者:
山治0712
时间:
2014-1-23 21:54
1,创建私有并静态的本类对象;2,私有化构造函数; 3,定义公有并静态的方法,返回该对象。
作者:
skyname
时间:
2014-1-23 22:50
同学,你确定你第一个程序没有写错?第一个是“饿汉式”,在getInstance()方法中是没有s = new Single();这一句的。其实不用finally修饰,也是可以的。
这是“饿汉式”和“懒汉式”的两个小程序。饿汉式,先初始化对象,Single类一进内存,就已经创建好了对象。“懒汉式”,Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象,对象是方法被调用时才初始化的,也叫对象的延时加载,所以,在多线程的时候容易出问题,一般都会在getInstance()方法中在初始化对象时加上一个锁,以确保安全。“饿汉式”和“懒汉式”在面试时,有时可能会问到,不管理不理解,先背下来再说。
作者:
darkpiece
时间:
2014-1-23 23:54
skyname 发表于 2014-1-23 22:50
同学,你确定你第一个程序没有写错?第一个是“饿汉式”,在getInstance()方法中是没有s = new Single();这 ...
代码应该没问题,我直接粘贴过来的,是复习的时候看到这两段代码,一下懵了。。
你一说我就知道了,谢谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2