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

Java 面試必備:核心語法知識點圖解大全

     編輯:Java 相關知識

前言

Java 基礎語法是面試的重中之重,本文精選 12 個高頻考點,配合圖解與程式碼範例,助你快速查漏補缺,面試更從容。

考點速覽

  1. & 與 && 差異
  2. switch 支援型別
  3. final 修飾變數語義
  4. == vs equals()
  5. Overload(多載)vs Override(覆寫)
  6. 建構子能否被 Override?
  7. 序列化 serialVersionUID 作用
  8. hashCode() 契約與作用
  9. Java 多型機制
  10. 介面 vs 抽象類別
  11. JDK 中不可被繼承的類別
  12. final、finally、finalize 三者差異

詳細解析

1. &(位元 AND / 邏輯 AND)vs &&(短路邏輯 AND)

& vs && 圖解

  • &:兩側運算元皆為 boolean 時為邏輯 AND,**不具備短路特性**,左邊 false 仍會執行右邊運算式。
  • &&:短路邏輯 AND,左邊為 false 直接返回 false,**不再執行右邊運算式**,常用於避免空指標(如 obj != null && obj.method())。
  • 位元運算:當運算元為整數型別時,& 執行位元級 AND 運算。

2. switch 支援的型別

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 實現。

3. final 修飾變數:引用不變 vs 物件不變?

final 修飾變數圖解

  • final 修飾基本類型:值不可變(常量)。
  • final 修飾參考類型:**引用(位址)不可變**,但指向的物件內部狀態可變(如 final List list = new ArrayList(); list.add(1); // 合法)。

4. == vs equals()

== vs equals 圖解

  • ==:基本類型比較值;參考類型比較記憶體位址(是否為同一物件)。
  • equals():Object 預設同 ==;常被覆寫(如 String、包裝類別、集合)比較內容/邏輯相等性。

5. Overload(多載)vs Override(覆寫)

Overload vs Override 圖解

特性Overload(多載)Override(覆寫)
發生範圍同一類別內父子類別之間
方法名稱相同相同
參數列表必須不同(型別/個數/順序)必須相同
回傳型別可不同相同或為子類型(共變返回)
拋出異常無限制子類異常範圍 ≤ 父類
存取修飾符無限制子類存取權 ≥ 父類
綁定時機編譯期靜態綁定執行期動態綁定

6. 建構子能否被 Override?

不能。 建構子不具備繼承性,子類無法覆寫父類建構子。但可Overload(多載)建構子(同類別內定義多個參數不同的建構子)。子類建構子預設隱式呼叫 super(),也可顯式呼叫 super(...) 指定父類建構子。

7. 序列化 serialVersionUID 的作用

  • 序列化將物件轉為位元組流持久化,反序列化還原時需確保類別結構相容。
  • serialVersionUID 為版本號,**明確宣告**可避免跨 JVM、跨版本部署時因隱式計算不一致導致 InvalidClassException。
  • 類別結構變更(增減欄位、修改型別)時,必須手動更新 UID,否則反序列化失敗;若確定相容可保持不變。

8. hashCode() 契約與作用

hashCode 與 equals 關係圖解

  • 核心契約:a.equals(b) == true → a.hashCode() == b.hashCode()(反向不一定成立)。
  • 應用場景:哈希容器(HashMap、HashSet、Hashtable)依賴 hashCode() 快速定位桶位,再用 equals() 精確比對。
  • 最佳實踐:覆寫 equals() 時**必須**覆寫 hashCode(),且邏輯保持一致(使用相同欄位計算)。

9. Java 多型機制本質

  • 向上轉型:父類/介面引用指向子類/實現類物件(Animal a = new Dog();)。
  • 動態綁定:方法呼叫在執行期根據實際物件型別解析(JVM 透過方法表查找),而非引用型別。
  • 唯有非 static、非 private、非 final、非建構子的實例方法具備多型行為。

10. 介面 vs 抽象類別

介面 vs 抽象類別 圖解

維度介面抽象類別
關鍵字interfaceabstract class
繼承關係implements,支援多實現extends,單繼承
方法預設JDK 8 前全隱式 public abstract;JDK 8+ 可 default/static/private可有具體方法、抽象方法、建構子
欄位隱式 public static final(常量)可為任意修飾符的實例/靜態欄位
設計意圖定義行為契約(能做什麼)定義實體屬性與共享實作(是什麼)

11. JDK 中不可被繼承的類別

  • 被 final 修飾的類別(如 String、Integer、Math 等包裝類別與工具類)。
  • Enum 隱式 final。

12. final、finally、finalize 三者差異

final finally finalize 圖解

  • final:修飾符——類不可繼承、方法不可覆寫、變數不可重新指派。
  • finally:try-catch-finally 區塊——**無論是否拋出異常皆會執行**,用於資源釋放(關閉流、鎖、連線)。
  • finalize():Object 方法——GC 回收物件前呼叫,**已棄用(JDK 9)**,不可靠、效能差,請改用 try-with-resources 或 Cleaner。

總結

掌握這 12 個核心語法考點,配合理解其背後原理(記憶體模型、JVM 綁定機制、集合框架契約),足以應付絕大多數 Java 基礎面試題。建議動手敲碼驗證每個知識點,將被動記憶轉為主動掌握。

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