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

Java 面試必懂 10 大核心概念:初始化、繼承、異常與泛型

     編輯:Java 相關知識

Java 基礎考點往往隱藏在「看似簡單」的代碼行為中。本文精選 10 個高頻核心概念,結合字節碼視角與 JVM 規範,助你構建精準的心智模型,應對面試與疑難排查。

1. 對象初始化順序

  • 非靜態:父類靜態 → 子類靜態 → 父類實例塊/字段 → 父類構造器 → 子類實例塊/字段 → 子類構造器。
  • 靜態:類加載階段(首次主動使用:new、靜態調用、反射、主類 main)按聲明順序執行靜態字段賦值與靜態塊。

2. 繼承鏈初始化細節

class Parent { static { A } { B } Parent() { C } }
class Child extends Parent { static { D } { E } Child() { F } }
new Child();
// 輸出順序:A → D → B → C → E → F

關鍵點:父類構造器隱式/顯式 super() 必須為子類構造器首行;父類無無參構造器時,子類必須顯式調用帶參 super(...)。

3. 構造器陷阱

  • 類可無構造器(編譯器生成無參),但若定義了帶參構造器,無參不再自動生成 → 子類若無顯式 super(...) 編譯報錯。
  • 構造器首行只能調用一次 this() 或 super(),不可同時存在。

4. 訪問修飾符矩陣

同類同包子類(異包)非子類(異包)
private✓✗✗✗
default✓✓✗✗
protected✓✓✓✗
public✓✓✓✓

構造器 private → 外部不可直接 new(單例模式基礎)。

5. 抽象類 vs 介面

  • 抽象類:可有構造器、非抽象方法、實例字段;單繼承。
  • 介面(Java 8 前):常量 + 抽象方法;多實現。Java 8+ 支援 default/static/private 方法。
  • 抽象方法不可 private/final/static。

6. final 三重語義

  • 字段:引用不可變(對象內部狀態仍可修改);編譯期常量折疊優化。
  • 方法:禁止重寫(編譯器可內聯優化)。
  • 類:禁止繼承(String、Integer 等不可變類)。

7. 介面進階

  • 介面字段隱式 public static final,必須顯式初始化。
  • 介面方法隱式 public abstract(Java 8 前)。
  • 介面可繼承多個介面(extends),實現類需實現所有抽象方法(含父介面)。

8. 內部類分類

  • 成員內部類:關聯外部實例,可訪問外部所有成員(含 private)。
  • 靜態嵌套類:無外部實例引用,行為同頂級類。
  • 局部/匿名內部類:定義在方法/代碼塊內,僅能訪問 final/effectively final 變量。

9. 異常體系

  • Error:JVM 級嚴重錯誤(OOM、StackOverflow),不可捕獲恢復。
  • Exception:受檢異常(編譯強制處理)+ 非受檢異常(RuntimeException 子類,編譯不強制)。
  • 捕獲順序:子類異常在前,父類在後;finally 必執行(除 System.exit)。

10. 泛型擦除與通配符

  • 泛型僅編譯期存在,運行期擦除為原始類型(List<String> → List)。
  • <? extends T> 生產者(只讀),<? super T> 消費者(只寫)— PECS 原則。
  • 無法 new T()、T[]、instanceof T;需傳 Class<T> 或用反射。
掌握這 10 大概念的「為什麼」,比背誦「是什麼」更有價值。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved