java中靜態代碼塊、構造代碼塊、構造方法、main函數的執行順序?
阿新 • • 發佈:2018-12-31
style 狀態 構造代碼塊 方法 構造函數 java 順序 png 執行順序
- 靜態代碼塊:在類被加載的時候就運行了,且只運行一次。static{}
- 構造代碼塊:在創建對象時被調用,每次創建對象都會調用一次。比靜態代碼塊少了static。{}
- 構造方法:用於創建對象時定義初始化的狀態。構造函數不能直接調用,必須通過new運算符在創建對象時才會自動調用,一般方法是在程序執行到它的時候被調用。
- 先不創建對象,如下:
-
public class Test { // 靜態代碼塊 static { System.out.println("靜態代碼塊"); } // 構造代碼塊 { System.out.println(
運行結果:
可見:先執行靜態代碼塊,後執行main方法。未創建對象,不執行構造代碼塊和構造方法。
- 下面實例化對象:
-
public static void main(String[] args) { System.out.println(
結果:
可以看得出,創建對象後構造代碼塊先於構造函數運行
- 總結:在創建對象前,可以執行靜態代碼塊和main(),靜態代碼塊>main(),及時這兩者調換代碼順序也一樣。
- 在創建對象後,可以執行構造代碼塊和構造函數,構造代碼塊>構造函數,及時這兩者調換代碼順序也一樣。
- 在main()中,代碼按照順序執行。
java中靜態代碼塊、構造代碼塊、構造方法、main函數的執行順序?