首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 類加載順序深度解析:從阿里面試題談起

     編輯:Java 相關知識

類加載順序:面試必考、實戰必懂

這是一道經典的阿里巴巴校招面試題:給定父子類包含靜態/非靜態變量、靜態/非靜態代碼塊、構造器、靜態/實例方法,實例化子類時,System.out.println 的輸出順序是什麼?通過實戰 Demo 徹底理清 JVM 類初始化機制。

完整驗證代碼結構

父類 B、子類 A extends B、啟動類 ClassLoading。每個類包含:

  • 靜態變量、靜態代碼塊(多個)
  • 實例變量、實例代碼塊(非靜態代碼塊)
  • 構造器、靜態方法、實例方法

執行順序鐵律

  1. 父類靜態成員:按代碼順序執行靜態變量賦值 → 靜態代碼塊(僅類加載時執行一次)
  2. 子類靜態成員:同理,按順序執行(僅一次)
  3. 父類實例化準備:實例變量賦值 → 實例代碼塊 → 父類構造器
  4. 子類實例化:實例變量賦值 → 實例代碼塊 → 子類構造器(可重複執行)
  5. 方法調用:靜態/實例方法均為被動調用,不自動執行

關鍵區別

特性靜態方法實例方法
調用方式類名直接調用 / 實例調用必須實例化後調用
執行時機類加載後可用對象創建後可用

實戰輸出驗證

運行 new A() 後,控制台輸出完美印證上述順序。掌握這套邏輯,不僅能應付面試,更能在複雜繼承體系中精準控制初始化行為,避免隱蔽 Bug。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved