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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. //懒汉式,单例的延迟加载模式
  2. class Singleton {
  3. //1,私有构造函数
  4. private Singleton(){}
  5. //2,声明一个本类的引用
  6. private static Singleton s;
  7. //3,对外提供公共的访问方法
  8. public static Singleton getInstance() {
  9. if(s == null)
  10. //线程1,线程2
  11. s = new Singleton();
  12. return s;
  13. }

  14. public static void print() {
  15. System.out.println("11111111111");
  16. }
  17. }
复制代码
以上代码是单例设计模式,我想问里面的if(s == null)判断是什么意思?他判断的是什么?  自己声明一个引用,还要判断其是不是为null吗?

3 个回复

正序浏览
Laopozini123 发表于 2016-4-5 07:22
谢谢,其实就是静态加载的问题,static先加载并不赋值,调用的时候再赋值

不客气,是的
回复 使用道具 举报
守徒徒 发表于 2016-4-4 14:06
所谓单例设计模式,也就是说内存中自始至终最多只能有一个对象存在,大家都共享这个对象。判断是不是为null ...

谢谢,其实就是静态加载的问题,static先加载并不赋值,调用的时候再赋值
回复 使用道具 举报
所谓单例设计模式,也就是说内存中自始至终最多只能有一个对象存在,大家都共享这个对象。判断是不是为null就是饿汉式与懒汉式的区别。饿汉式:不管三七二十一,一旦初始化程序时就创建该对象,所以不用判断是不是为null,直接private static Singleton s = new Singleton(),然后用到时直接获取返回即可;而懒汉式则在需要用到该对象时才创建,程序初始化时private static Singleton s = null,此时该对象还不存在,如果用到时就要判断是不是为null,如果是就创建该对象并返回,否则直接返回即可。这是我自己的理解!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马