浅谈Java中静态代码块和非静态代码块

静态代码块:

      static{}

      执行优先级高于非静态的初始化块,它会在类初始化(类初始化这个问题改天再详细讨论)的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。

非静态代码块:

      {}

      执行的时候如果有静态初始化块,先执行静态初始化块再执行非静态初始化块,在每个对象生成时都会被执行一次,它可以初始化类的实例变量。非静态初始化块会在构造函数执行时,在构造函数主体代码执行之前被运行。

例程:   

public class Test1 {
  public static String staticField = "静态变量";
  public String field = "变量";
  static{
      System.out.println(staticField);
      System.out.println("静态初始块");
  }
  
  {
      System.out.println(field);
      System.out.println("初始化块");
  }
  
  public Test1() {
     System.out.println("构造器");
  }
    
  public static void main(String[] args) {
    new Test1();
    System.out.println();
    new Test1();
  }
}

     例程运行结果:            

    静态变量
    静态初始块
    变量
    初始化块
    构造器

    变量
    初始化块
    构造器

     

  

posted @ 2017-05-11 20:34  二十亿光年的孤独  阅读(1189)  评论(2编辑  收藏  举报