Java中的初始化块

在Java中,有两种初始化块:静态初始化块和非静态初始化块。

静态初始化块:使用static定义,当类装载到系统时执行一次。若在静态初始化块中想初始化变量,那仅能初始化类变量,即static修饰的数据成员。
非静态初始化块:在每个对象生成时都会被执行一次,可以初始化类的实例变量。

非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被运行。

package com.tiandinet.studyjava;
 
public class TestInitiateBlock {
 
    {
        System.out.println("In non-static initialization block!");
    };
 
    static {
        System.out.println("In static initialization block!");
    };
 
    public TestInitiateBlock() {
        System.out.println("In Constructor1!");
    }
 
    public void show() {
        System.out.println("In show()!");
    }
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        TestInitiateBlock ti = new TestInitiateBlock();
        ti.show();
    }
 
}

运行结果:
In static initialization block!
In non-static initialization block!
In Constructor1!
In show()!