黑马程序员技术交流社区

标题: 懒汉式,不是延迟加载么? [打印本页]

作者: yi651312197    时间: 2016-1-5 10:26
标题: 懒汉式,不是延迟加载么?
  1. Class Single{
  2.         private Single(){}
  3.         private static Single s = null;
  4.         public static Single getInstance(){
  5.                         if(s==null)
  6.                                 s = new Single();
  7.                         return s;
  8.         }
  9. }
复制代码
懒汉式,不是延迟加载么?
static 修饰的getInstance方法,随着类的加载就已经加载了啊?  这个怎么理解

作者: zhj806504628    时间: 2016-1-5 13:46
膜拜大神
作者: 黑色皮肤的马    时间: 2016-1-5 21:29
延迟加载是指先判断s是否为空,是空的话就创建对象,不是空的话就直接返回对象。这是相对于饿汉式而言的,饿汉式是类一加载就创建对象,因为对象是在类中创建的。而饿汉式类加载后还需要判断一下,如果对象不存在才创建。
作者: yi651312197    时间: 2016-1-6 08:43
黑色皮肤的马 发表于 2016-1-5 21:29
延迟加载是指先判断s是否为空,是空的话就创建对象,不是空的话就直接返回对象。这是相对于饿汉式而言的, ...

static默认就加载了啊,那是不是饿汉式也一启动虚拟机就创建了啊
作者: 李永佳    时间: 2016-1-6 11:59
这个问题问的好,膜拜!哪位大神来解答???
作者: yi651312197    时间: 2016-1-6 12:46
李永佳 发表于 2016-1-6 11:59
这个问题问的好,膜拜!哪位大神来解答???

哈哈,确实不怎么理解
作者: 黑色皮肤的马    时间: 2016-1-6 21:56
yi651312197 发表于 2016-1-6 08:43
static默认就加载了啊,那是不是饿汉式也一启动虚拟机就创建了啊

我的理解是,类加载了,但是还没创建对象。
作者: li151385    时间: 2016-1-6 22:21
什么时候用,什么时候创建。
作者: 空与夏虫语冰    时间: 2016-1-7 00:14
只是加载了方法,没有对象去调用这个方法,所以这个方法没有运行,
只有用类名. 第一次去调用方法的时候才会创建对象,第二次和第二次以后的调用都返回的是第一次调用时创建的对象
作者: 隔壁老猫    时间: 2016-1-7 17:21
单例模式, 私有构造方法, 无法实例化, 但是要对外提供公共的访问方式, 所以才需要用类名. 调用, 你不静态怎么类名. 调用呢
作者: yi651312197    时间: 2016-1-7 19:06
空与夏虫语冰 发表于 2016-1-7 00:14
只是加载了方法,没有对象去调用这个方法,所以这个方法没有运行,
只有用类名. 第一次去调用方法的时候才会创 ...

有点懂了  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2