1. 程式人生 > >java中靜態代碼塊、構造代碼塊、構造方法、main函數的執行順序?

java中靜態代碼塊、構造代碼塊、構造方法、main函數的執行順序?

style 狀態 構造代碼塊 方法 構造函數 java 順序 png 執行順序

  1. 靜態代碼塊:在類被加載的時候就運行了,且只運行一次。static{}
  2. 構造代碼塊:在創建對象時被調用,每次創建對象都會調用一次。比靜態代碼塊少了static。{}
  3. 構造方法:用於創建對象時定義初始化的狀態。構造函數不能直接調用,必須通過new運算符在創建對象時才會自動調用,一般方法是在程序執行到它的時候被調用。
  • 先不創建對象,如下:
  • public class Test {
        // 靜態代碼塊
        static {
            System.out.println("靜態代碼塊");
        }
        // 構造代碼塊
        {
            System.out.println(
    "構造代碼塊"); } // 構造方法 public Test() { System.out.println("構造方法"); } // main方法 public static void main(String[] args) { System.out.println("main方法"); } }

    運行結果:技術分享圖片

    可見:先執行靜態代碼塊,後執行main方法。未創建對象,不執行構造代碼塊和構造方法。

  • 下面實例化對象:
  • public static void main(String[] args) {
            System.out.println(
    "main方法"); Test aTest = new Test(); }

    結果:技術分享圖片

    可以看得出,創建對象後構造代碼塊先於構造函數運行

  • 總結:在創建對象前,可以執行靜態代碼塊和main(),靜態代碼塊>main(),及時這兩者調換代碼順序也一樣。
  • 在創建對象後,可以執行構造代碼塊和構造函數,構造代碼塊>構造函數,及時這兩者調換代碼順序也一樣。
  • 在main()中,代碼按照順序執行。

java中靜態代碼塊、構造代碼塊、構造方法、main函數的執行順序?