欲语已忘言-
2016-01-03 23:37
就是我想问是,那个输出语句按顺序来不是先从num1到num2的吗?第二就是那个创建第二个对象hello2 的时候 ,为什么运行结果还会出现通过初始化块为变量num2赋值 这些语句。本人愚钝,求大神指教。。
程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
这个是正解。就是说因为hello1的运行顺序是静态初始化 num3 ==>初始化块num2 ==>构造方法 num1;
然后他又创建了hello2,因为静态模块只能执行一次,所以num3不执行,只执行num2 ==>num1
程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
痛苦,不知道你具体指哪里,不过继续看吧,后面有相关内容。执行的循序并不是我们打出代码的循序,有它自己的一套规定,所以方法啊什么的可以写在main函数后面调用,一般开发都是先写大概思路,再写具体方法,我想这应该就是它为什么这样规定吧。
Java入门第二季 升级版
530649 学习 · 6091 问题
相似问题