如題是結論,如果有人問你Java類的成員初始化順序和初始化塊知識就這樣回答他。下面是代碼:
package com.test;public class TestClass{// 成員變量賦值第一個執行private static int m1=1;private int m2=1;// 靜態構造函數第二個執行static{System.out.println("成員變量賦值先于靜態構造函數 m1="+m1);m1=2;}// 構造函數第三個執行public TestClass(){System.out.println("靜態構造函數先于構造函數 m1="+m1);m1=3;System.out.println("成員變量賦值先于構造函數 m2="+m2);m2=3;}public void printM1m2(){System.out.println("m1="+m1);System.out.println("m2="+m2);}public static void main(String[] args){TestClass t=new TestClass();t.printM1m2();} }
控制臺輸出:
成員變量賦值先于靜態構造函數 m1=1 靜態構造函數先于構造函數 m1=2 成員變量賦值先于構造函數 m2=1 m1=3 m2=3
?