为了账号安全,请及时绑定邮箱和手机立即绑定

为什么老师敲得代码执行了hello还会执行hello2?

为什么不执行最后一行我懂了,但我没看到调用hello2啊??

正在回答

4 回答

在加载一个新的对象时,会先初始化块,然后在调用构造方法。初始化块的时候,会先初始化静态类型的变量,再初始化一般变量。而静态变量在一个main方法中只会初始化一次,所以在hello2中没有num3,而且num2在num1前面。可以把hello1和hello的顺序换一下就清楚了


0 回复 有任何疑惑可以回复我~

是因为在创造Hello2时,调用了构造方法和初始化块,但由于静态初始化块只会执行一次,所以只会打印两条。

0 回复 有任何疑惑可以回复我~
#1

苏文进

请问是在创建对象的过程中会执行程序中的构造方法和初始化块吗?如果是这样,为什么呢?
2017-06-15 回复 有任何疑惑可以回复我~

同问,只是创建了一个hello2的对象,为什么前面的非静态变量还会再赋值一次并打印出来呢? 是因为用构造方法创建对象的时候,会自动执行一遍前面的那段代码吗?

0 回复 有任何疑惑可以回复我~

意思是不会执行静态初始化块,也就是不会在出现一次“通过静态初始化块为静态变量num3赋值”

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么老师敲得代码执行了hello还会执行hello2?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信