关于饿汉式和懒汉式的代码实现方式
# 具体遇到的问题
饿汉式是类加载的时候先实例化,再调用getInstance(),而懒汉式是先调用getInstance(),再实例化,
问题1:因为是static类型,实际上不都是实例化一次么。
问题2:关于说懒汉式是在第一次使用时实例化,饿汉式和懒汉式在使用上都是"SingletonOne.getInstance();",我觉得没啥区别啊。
问题3:为什么说饿汉式是拿空间换时间,懒汉式是拿时间换空间呢
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
SingletonOne one=SingletonOne.getInstance();//饿汉式
SingletonTwo one1=SingletonTwo.getInstance();//懒汉式
正在回答
同学你好,1、同学的说法是正确的,static是静态的,只会执行一次。
2、饿汉式在类加载时创建实例,创建实例时就会调用构造方法完成实例构造;而类加载是当Java虚拟机第一次需要使用类信息时就会进行类加载。
如上所示,只有在调用getInstance时,才会去判断是否存在,再来创建对象。
而饿汉式中的静态对象是随着类的加载而加载的,就是说当加载这个SingletonOne类时,就执行创建对象的private static SingletonOne instance=new SingletonOne(); 句话
如上所示,在调用getInstance时,对象已经创建完成了,只是此时才去返回给调用者。
3、如上所描述的,饿汉式是在调用getInstance时,对象的创建已经完成,直接就可以返回,好处就是时间快,因为对象已经完成创建了,缺点就是还没有使用时,这个对象一直在占据着空间,所以说饿汉式是拿时间换空间。
反之懒汉式只在调用时,才会去创建对象,在创建时会耗费时间对一点,但是好处就是没有一直有一个对象占用空间,所以说是懒汉式是拿时间换空间。
- 参与学习 人
- 提交作业 9400 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星