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

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

  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()中,程式碼按照順序執行。