static之静态初始化块

 

static之静态初始化块

     所有的静态初始化块都优先执行,其次才是非静态的初始化块和构造函数,它们的执行顺序是:
      父类的静态初始化块
      子类的静态初始化块
      父类的初始化块
      父类的构造函数
      子类的初始化块
      子类的构造函数
      也就是说程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

比如下面的代码:

运行结果:

 

 


需要特别注意:
1)静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
2)非静态初始化块的代码会在类构造函数之前执行。使用时应当养成把初始化块写在构造函数之前的习惯,便于调试。

参考:

  • http://www.cnblogs.com/BlackStorm/p/5699965.html
  • 慕课网 Java入门第二季

                                     

posted @ 2017-05-02 12:10  悟知清风  阅读(313)  评论(0编辑  收藏  举报