饿汉和懒汉

饿汉和懒汉

饿汉

        //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进行判断?为什么饿汉是加载是就创建了实例,懒汉就是调用的时候才创建实例。不明白

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

懒汉式加载类的时候并不会真正的去开辟内存空间储存对象,而是在第一次调用的时候,先去判断是否已经初始化对象了,没有才去开辟内存空间进行对象的初始化。而饿汉就直接在加载类的时候就去开辟内存空间进行对象的创建了。

提问者 oreooooo 2017-08-23 15:49:25

哦哦哦哦,貌似懂了一点

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师