Java 基礎語法是面試的重中之重,本文精選 12 個高頻考點,配合圖解與程式碼範例,助你快速查漏補缺,面試更從容。
& 與 && 差異switch 支援型別final 修飾變數語義== vs equals()serialVersionUID 作用hashCode() 契約與作用final、finally、finalize 三者差異&(位元 AND / 邏輯 AND)vs &&(短路邏輯 AND)
&:兩側運算元皆為 boolean 時為邏輯 AND,**不具備短路特性**,左邊 false 仍會執行右邊運算式。&&:短路邏輯 AND,左邊為 false 直接返回 false,**不再執行右邊運算式**,常用於避免空指標(如 obj != null && obj.method())。& 執行位元級 AND 運算。switch 支援的型別
byte、short、char、int、enum(JDK 5+)、String(JDK 7+)、包裝類別(Byte、Short、Character、Integer)。long、float、double、boolean。switch 僅支援 int 型別,byte/short/char 會自動提升為 int;String 與 enum 編譯器透過 hashCode() 與 ordinal() 轉換為 int 實現。final 修飾變數:引用不變 vs 物件不變?
final 修飾基本類型:值不可變(常量)。final 修飾參考類型:**引用(位址)不可變**,但指向的物件內部狀態可變(如 final List list = new ArrayList(); list.add(1); // 合法)。== vs equals()
==:基本類型比較值;參考類型比較記憶體位址(是否為同一物件)。equals():Object 預設同 ==;常被覆寫(如 String、包裝類別、集合)比較內容/邏輯相等性。
| 特性 | Overload(多載) | Override(覆寫) |
|---|---|---|
| 發生範圍 | 同一類別內 | 父子類別之間 |
| 方法名稱 | 相同 | 相同 |
| 參數列表 | 必須不同(型別/個數/順序) | 必須相同 |
| 回傳型別 | 可不同 | 相同或為子類型(共變返回) |
| 拋出異常 | 無限制 | 子類異常範圍 ≤ 父類 |
| 存取修飾符 | 無限制 | 子類存取權 ≥ 父類 |
| 綁定時機 | 編譯期靜態綁定 | 執行期動態綁定 |
不能。 建構子不具備繼承性,子類無法覆寫父類建構子。但可Overload(多載)建構子(同類別內定義多個參數不同的建構子)。子類建構子預設隱式呼叫 super(),也可顯式呼叫 super(...) 指定父類建構子。
serialVersionUID 的作用serialVersionUID 為版本號,**明確宣告**可避免跨 JVM、跨版本部署時因隱式計算不一致導致 InvalidClassException。hashCode() 契約與作用
a.equals(b) == true → a.hashCode() == b.hashCode()(反向不一定成立)。HashMap、HashSet、Hashtable)依賴 hashCode() 快速定位桶位,再用 equals() 精確比對。equals() 時**必須**覆寫 hashCode(),且邏輯保持一致(使用相同欄位計算)。Animal a = new Dog();)。
| 維度 | 介面 | 抽象類別 |
|---|---|---|
| 關鍵字 | interface | abstract class |
| 繼承關係 | implements,支援多實現 | extends,單繼承 |
| 方法預設 | JDK 8 前全隱式 public abstract;JDK 8+ 可 default/static/private | 可有具體方法、抽象方法、建構子 |
| 欄位 | 隱式 public static final(常量) | 可為任意修飾符的實例/靜態欄位 |
| 設計意圖 | 定義行為契約(能做什麼) | 定義實體屬性與共享實作(是什麼) |
final 修飾的類別(如 String、Integer、Math 等包裝類別與工具類)。Enum 隱式 final。final、finally、finalize 三者差異
final:修飾符——類不可繼承、方法不可覆寫、變數不可重新指派。finally:try-catch-finally 區塊——**無論是否拋出異常皆會執行**,用於資源釋放(關閉流、鎖、連線)。finalize():Object 方法——GC 回收物件前呼叫,**已棄用(JDK 9)**,不可靠、效能差,請改用 try-with-resources 或 Cleaner。掌握這 12 個核心語法考點,配合理解其背後原理(記憶體模型、JVM 綁定機制、集合框架契約),足以應付絕大多數 Java 基礎面試題。建議動手敲碼驗證每個知識點,將被動記憶轉為主動掌握。