|
发表于 2022-1-11 11:00:13
|
显示全部楼层
本帖最后由 darius 于 2022-1-11 11:01 编辑
这不是考你jvm的类加载机制
在准备阶段 会把静态变量在方法区分配内存,并设置默认初始值。
在初始化阶段 会依据赋值语句主动为类变量赋值。
1、首先执行main中的getInstance();
2、类的加载:加载类Singleton
3、类的验证
4、类的准备:为静态变量分配内存,设置默认值。这里为instance(引用类型)设置为null,x,y(基本数据类型)设置默认值0
5、类的初始化(按照赋值语句顺序进行修改):
执行private static Singleton instance = new Singleton();
执行Singleton的构造器:x++; y++; 此时x,y均等于1
执行
public static int x = 0;
public static int y;
此时x=0,y=1
|
|