1. 程式人生 > >靜態程式碼塊、程式碼塊、構造器、main方法的執行順序

靜態程式碼塊、程式碼塊、構造器、main方法的執行順序

java物件的初始化順序

(1)類載入之後,按從上到下(從父類到子類)執行被static修飾的語句;

(2)當static語句執行完之後,再執行main方法;

(3)如果有語句new了自身的物件,將從上到下執行構造程式碼塊、構造器(兩者可以說繫結在一起)。

看程式碼:

public class TestStaticF {

	public TestStaticF(){
	
		System.out.println("這裡是構造器F");
	}
	
	{
		System.out.println("這裡是程式碼塊F");
	}
	
	static{
		System.out.println("這裡是靜態程式碼塊F");
	}
	
}

public class TestStatic extends TestStaticF{

	public TestStatic(){
	
		System.out.println("這裡是構造器");
	}
	
	{
		System.out.println("這裡是程式碼塊");
	}
	
	static{
		System.out.println("這裡是靜態程式碼塊");
	}
	
	public static void main(String[] args){
		System.out.println("開始執行main方法");
		TestStatic ts=new TestStatic();
	}
}

輸出:

這裡是靜態程式碼塊F
這裡是靜態程式碼塊
開始執行main方法
這裡是程式碼塊F
這裡是構造器F
這裡是程式碼塊
這裡是構造器

結論:由此可見靜態塊的載入是在main方法前執行的,先執行程式碼塊後執行構造方法,有父類到子類。

注意:子類的程式碼塊並不優先於父類的構造。