这运行结果不明白

来源:8-10 Java 中的 static 使用之静态初始化块

欲语已忘言-

2016-01-03 23:37

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


写回答 关注

3回答

  • kafeiHAHA
    2016-01-04 00:10:27

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

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

  • sidi
    2016-01-04 00:04:40

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

  • sidi
    2016-01-03 23:57:40

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

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530649 学习 · 6091 问题

查看课程

相似问题