课程
/后端开发
/Java
/Java入门第二季 升级版
就是我想问是,那个输出语句按顺序来不是先从num1到num2的吗?第二就是那个创建第二个对象hello2 的时候 ,为什么运行结果还会出现通过初始化块为变量num2赋值 这些语句。本人愚钝,求大神指教。。
2016-01-03
源自:Java入门第二季 升级版 8-10
正在回答
程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
这个是正解。就是说因为hello1的运行顺序是静态初始化 num3 ==>初始化块num2 ==>构造方法 num1;然后他又创建了hello2,因为静态模块只能执行一次,所以num3不执行,只执行num2 ==>num1
痛苦,不知道你具体指哪里,不过继续看吧,后面有相关内容。执行的循序并不是我们打出代码的循序,有它自己的一套规定,所以方法啊什么的可以写在main函数后面调用,一般开发都是先写大概思路,再写具体方法,我想这应该就是它为什么这样规定吧。
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
1 回答运行结果不同?
2 回答运行后结果不对
11 回答想不明白为什么这样不行?
4 回答为什么运行结果会显示这三行
2 回答不明白为什么输入phone.call();就可以运行出新属性int var;的两个默认赋值结果;