init方法:java
.Java文件在編譯後會在字節碼文件中生成init方法,該方法被稱之爲實例構造器。init方法是在對象實例化時執行的。該方法中的操做及其順序爲函數
1.父類變量初始化 2.父類語句塊 3.父類構造函數 4.子類變量初始化 5.子類語句塊 6.子類構造函數對象
clinit方法:接口
.java文件在編譯後會在字節碼文件中生成clinit方法,該方法被稱之爲類構造器。該方法中的操做及其順序爲:it
1.父類靜態變量初始化 2.父類靜態語句塊 3.子類靜態變量初始化 4.子類靜態語句塊 (若父類爲接口,則不會調用父類的clinit方法,一個類能夠沒有clinit方法)編譯
clinit必定比init先執行,由於clinit是在類加載過程當中執行的,而init是在對象實例化時執行的。整個執行順序爲:class
1.父類靜態變量初始化 2.父類靜態語句塊 3.子類靜態變量初始化 4.子類靜態語句塊 5.父類變量初始化 6.父類語句塊 7.父類構造函數 8.子類變量初始化 9.子類語句塊 10.子類構造函數變量