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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM