初始化块执行和对象的关系

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

慕粉1205048519

2017-01-19 23:05


http://img.mukewang.com/5880d1120001956c10520789.jpg

创建对象是会执行初始化块吗,创建对象过程不就是执行构造方法的过程吗?和初始化块有关系吗?

写回答 关注

1回答

  • 慕粉1904131765
    2017-01-19 23:22:15
    已采纳

        初始化块并不是创建对象时执行的,而是第一次用到那个类的时候执行的。

        以上面这个例子来说,程序执行main方法中第一句HelloWorld hello = new HelloWorld();的时候就会执行初始化块,而且只会执行一次。程序后面又创建了一个对象hello2,这个时候初始化块不执行,构造方法执行。只要记住初始化块是程序第一次调用类的时候执行(且只执行一次),而构造方法是每创建一个对象都会执行一次就行了。

        另外,它们执行的顺序是:静态初始化块先执行,然后非静态初始化块再执行,最后构造方法执行。相同类型的初始化块,按照定义时的顺序执行。

    慕粉1205...

    静态初始化块在加载类时执行,且只执行一次。那非静态初始化块在什么时候执行。图片中的代码执行创建对象hello2时输出了 通过初始化块为变量num2赋值 通过构造方法为变量num1赋值 这样的结果说明非静态初始化块在创建对象hello2的时候又执行了一次,对于非静态初始化块什么时候执行还是不太清楚。

    2017-01-20 11:01:23

    共 2 条回复 >

Java入门第二季 升级版

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

530690 学习 · 6091 问题

查看课程

相似问题