想知道地球诞生为什么只在第一个地球创建中下面出现,第二个和第三个没有

想知道地球诞生为什么只在第一个地球创建中下面出现,第二个和第三个没有

public class Earth {
     //定义私有构造方法,并在构造方法中打印输出“地球诞生”
	private Earth(){
	    System.out.println("地球诞生");
	}
	 //定义私有静态类对象并完成实例化
	private static Earth instance=new Earth();	
	 //定义公有静态方法返回类内的私有静态对象
	public static Earth getInstance(){
	    return instance;
	}
}
public class Test {

    public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("第一个地球创建中。。。。");
		Earth one=Earth.getInstance();
		System.out.println("第二个地球创建中。。。。");
		Earth two=Earth.getInstance();
		System.out.println("第三个地球创建中。。。。");
		Earth three=Earth.getInstance();
		System.out.println("问:三个地球是同一个么?");
		System.out.println(one);
	    System.out.println(two);
		System.out.println(three);
	}
}


正在回答

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

1回答

单例模式可以保证无论调用多少次getInstance()都只实例化一个对象。所以只在第一次调用的时候实例化,后面使用的是同一个对象。

祝学习愉快~

  • 慕先生7975374 提问者 #1
    非常感谢!
    2017-08-18 11:22:13
  • 老师原理是什么啊
    2017-08-20 15:10:54
  • 我debug了一下,在主方法中我第一次实例化对象时候,程序进入Earth类中会执行私有的构造方法,然后再去公有的静态方法中返回本类中的实例化对象,对二次实例化对象的时候,程序直接执行公有的静态方法返回本类的实例化对象了,并没有执行私有的构造方法,为什么?
    2017-08-20 15:28:27
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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