谷姐:我们都是谷歌迷
We are all Google fans

面试题java-csj50

Rate this post

大佬知道为啥运行结果是0 1吗,百思不得其解

热议
推荐楼 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小时前

看点正常的东西吧。别学成了孔乙己。。。。

申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。

未经谷姐允许不得转载:谷姐靓号网 » 面试题java-csj50
分享到: 生成海报

热门文章

评论 抢沙发

评论前必须登录!

立即登录   注册

买Google Voice认准【谷姐靓号网】

Google Voice靓号列表Google Voice自助购买
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活