01 init方法
init是對象構造器方法,在建立實例時調用。jvm
02 clinit方法
clinit是類構造器方法,也就是在jvm在進行類加載-驗證-解析-初始化中的初始化階段,jvm會調用clinit方法。函數
clinit方法是在類加載過程當中執行的,而init方法是在對象實例化執行的。因此clinit必定比init方法先執行。
因此執行順序爲:對象
- 父類靜態變量初始化
- 父類靜態語句塊
- 子類靜態變量初始化
- 子類靜態語句塊
- 父類變量初始化
- 父類語句塊
- 父類構造函數
- 子類變量初始化
- 子類語句塊
- 子類構造函數