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

这运行结果不明白

就是我想问是,那个输出语句按顺序来不是先从num1到num2的吗?第二就是那个创建第二个对象hello2 的时候 ,为什么运行结果还会出现通过初始化块为变量num2赋值 这些语句。本人愚钝,求大神指教。。


正在回答

3 回答

程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

这个是正解。就是说因为hello1的运行顺序是静态初始化 num3 ==>初始化块num2 ==>构造方法 num1;
然后他又创建了hello2,因为静态模块只能执行一次,所以num3不执行,只执行num2 ==>num1

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

程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

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

痛苦,不知道你具体指哪里,不过继续看吧,后面有相关内容。执行的循序并不是我们打出代码的循序,有它自己的一套规定,所以方法啊什么的可以写在main函数后面调用,一般开发都是先写大概思路,再写具体方法,我想这应该就是它为什么这样规定吧。

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

举报

0/150
提交
取消

这运行结果不明白

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