热议
推荐楼 darius 3小时前
这不是考你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
再试试。。。。答案就是1.1了。。。
3楼 dragonfsky 3小时前
跟执行顺序有关 你debug一下就知道了,执行完getInstant后又对x赋值0
5楼 hugh_wick 3小时前
6楼 woniu 3小时前
百思不得骑姐?
简单说就是构造类的时候,先执行构造函数,然后再执行静态变量赋值
7楼 半世烟尘 3小时前
我觉得你Debug一下你就知道什么原因了
8楼 dajiahao 3小时前
这不是考你jvm的类加载机制
在准备阶段 会把静态变量在方法区分配内存,并设置默认初始值。
大佬厉害,能说这么清晰明了
9楼 csj50 3小时前
这不是考你jvm的类加载机制
在准备阶段 会把静态变量在方法区分配内存,并设置默认初始值。
懂了,厉害
10楼 daizuan 3小时前
看点正常的东西吧。别学成了孔乙己。。。。
申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。
评论前必须登录!
立即登录 注册