1. 程式人生 > >Java原始碼各個程式碼塊的載入順序

Java原始碼各個程式碼塊的載入順序

類第一次載入時回載入靜態成員、靜態程式碼塊、成員變數、構造程式碼塊、構造方法,下面通過輸出顯示在類載入時以上成員的載入順序。

<span style="font-size:14px;">public class Test1 {
	public static void main(String[] args) {
		// 第一次載入class檔案要執行的程式塊
		BlockSequence bs = new BlockSequence();
		System.out.println("----------------------------------------");
		// 第二次載入就不要載入靜態程式碼塊了
		new BlockSequence();
	}
} /* * 作為能夠顯示屬性已建立的臨時類。 */

class Demo {
	public Demo(String str) {
		System.out.println(str + ": Demo物件");
	}
}

/**
 * 各個程式塊的名稱就是索要輸出的字串。不在進行一一標記。
 */
class BlockSequence {
	private Demo d1 = new Demo("成員屬性");
	public static Demo d2 = new Demo("靜態變數");

	public BlockSequence() {
	}

	{
		System.out.println("我是成員程式碼塊");
	}

	static {
		System.out.println("我是靜態程式碼塊");
	}

	
}</span>


執行結果:

              靜態變數: Demo物件
              我是靜態程式碼塊
              成員屬性: Demo物件
              我是成員程式碼塊
              ----------------------------------------
             成員屬性: Demo物件
             我是成員程式碼塊
分析:

     載入時順序為:

  1. 靜態變數
  2. 靜態程式碼塊
  3. 成員屬性
  4. 成員程式碼塊
  5. 構造程式碼塊
     如果需要靜態方法時直接使用類名呼叫就可以。在載入時直接載入不執行 成員方法是用物件呼叫,載入時不執行。