关于3-2的练习的构造方法

关于3-2的练习的构造方法

public class Earth {
     private Earth(){
		System.out.println("地球诞生");
		
	}
	private static  Earth instance=new Earth();
	public static Earth getInstance(){
		return instance;
	}
	
}

为了达到输出“地球诞生"这句话,需要在私有的构造方法中加入这条输出语句,不过对于饿汉式和懒汉式我还有自己的疑问,既然饿汉式在类调用时就已经初始化好了实例对象,而实例对象肯定会调用构造方法的,那为什么“地球诞生”不是在“第一个地球。。“这句话之前输出,如果是调用getInstance方法的时候才开始创建并输出构造方法中的那句话,那“地球诞生”不该只输出一次啊。这两个练习并没有使我区分开懒汉和饿汉的实际流程

正在回答 回答被采纳积分+1

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

2回答
提问者 weibo_飞来云去_0 2017-09-02 23:35:44

饿汉式中的实例是不是在import类的时候就已经创建,懒汉式在创建对象并调用相关方法时候才创建instance实例,这样理解对不?

一叶知秋519 2017-08-30 10:13:46

问题的关键点在于对static关键字的理解:1、static变量只能初始化一次,如果已经初始化了,后面无论在调用多少次,都不会再进行初始化,所以能够保证只有一个实例对象;2、static变量在类加载时执行,类加载是将字节码class文件加载到内存中的过程,不执行任何的方法和属性;

因此说,只有在主方法创建Earth对象并调用getInstance方法的时候才执行构造方法,输出“地球诞生”。

祝学习愉快~

  • 提问者 weibo_飞来云去_0 #1
    饿汉式中的实例是不是在import类的时候就已经创建,懒汉式在创建对象并调用相关方法时候才创建instance实例,这样理解对不?
    2017-09-02 23:36:01
  • 饿汉式是在创建类时就已经创建好了,而懒汉式是在调用getInstance()方法的时候才被创建。
    2017-09-03 10:01:59
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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