饿汉和懒汉
饿汉
//1.创建私有构造方法 private SingletonOne() { } //2.创建该类型的私有静态实例 private static SingletonOne instance=new SingletonOne(); //3.创建共有静态方法,返回私静态实例 public static SingletonOne getInstance() { return instance; }
懒汉
//1.创建私有构造方法 private SingletonTwo() { } //2.创建该类的静态私有实例 private static SingletonTwo instance=null; //3.创建公有静态方法,返回实例对象 public static SingletonTwo getInstance() { if(instance==null) { instance=new SingletonTwo(); } return instance; }
在类加载的时候,静态属性和方法优先加载。饿汉和懒汉的2,3步骤都是静态,都是优先加载。只不过懒汉的创建实例放在了步骤3中,难道系统优先加载步骤3的时候不会对if进行判断?为什么饿汉是加载是就创建了实例,懒汉就是调用的时候才创建实例。不明白
12
收起
正在回答
2回答
懒汉式加载类的时候并不会真正的去开辟内存空间储存对象,而是在第一次调用的时候,先去判断是否已经初始化对象了,没有才去开辟内存空间进行对象的初始化。而饿汉就直接在加载类的时候就去开辟内存空间进行对象的创建了。
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星