这里的第2步, "创建该类型的私有静态实例"是什么时候执行的?

这里的第2步, "创建该类型的私有静态实例"是什么时候执行的?

https://img1.sycdn.imooc.com//climg/62b04050097b7fd708280488.jpg

我知道第一步,构造方法是在new实里的时候执行的;

第三步,是在调用这个方法的时候执行的;

但是,第二步是在什么时间被执行的呢?下图是我之前做的笔记,想不出是2是在其中的什么地方执行的:

https://img1.sycdn.imooc.com//climg/62b040fe097908a405800624.jpg

正在回答

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

1回答

同学你好,是随着类加载进内存而被加载进内存,也就是说是在类加载进内存时执行。

参考代码如下:

//饿汉式:创建对象实例的时候直接初始化
public class SingletonOne {
	//1.创建类中私有构造
	private SingletonOne() {
		System.out.println("测试");
	}

	//2.创建该类型的私有静态实例
	private static SingletonOne instance = new SingletonOne();

	//3.创建公有静态方法返回静态实例对象
	public static SingletonOne getInstance() {
		return instance;
	}
	public static void main(String[] args) {
		
	}
}

https://img1.sycdn.imooc.com//climg/62b0471609bbb6f507660432.jpg

祝学习愉快~

  • 宝慕林5570576 提问者 #1

    这个类是什么时候被加载进内存的呢?是程序在运行之前就被加载进内存了吗?

    2022-06-22 01:10:47
  • 好帮手慕小小 回复 提问者 宝慕林5570576 #2

    同学你好,当前类包含主方法,故是在程序启动时被加载进内存的。

    注:JVM启动包含main方法的启动类时,这个类会被加载进内存。

    祝学习愉快~

    2022-06-22 10:09:53
  • 宝慕林5570576 提问者 回复 好帮手慕小小 #3

    那如果它不是在启动类里面,而是在其他的类中,被import了,这种情况下是什么时候加载呢?是在import它的那个类调用它的getInstance()方法时吗?

    2022-06-22 20:24:36
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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