1.java在編譯以後會在字節碼文件中生成<init>方法,稱之爲實例構造器,該實例構造器會將語句塊、變量初始化、調用父類的構造器等操做收斂到<init>方法中,收斂順序爲: java
1.父類變量初始化塊 2.父類語句塊 3.父類構造函數 4.子類變量初始化塊 5.子類語句塊 6.子類構造函數 函數
所謂收斂到<init>方法中的意思是:將這些操做放入到<init>中去執行。對象
<clinit>方法是在類加載過程當中執行的,而<init>是在對象實例化執行的,因此<clinit>必定比<init>先執行。因此整個順序爲: 1.父類靜態變量初始化 2.父類靜態語句塊 3.子類靜態變量初始化 4.子類靜態語句塊 5.父類變量初始化塊 6.父類語句塊 7.父類構造函數 8.子類變量初始化塊 9.子類語句塊 10.子類構造函數接口