整理了 Java 基礎階段最核心、最高頻的 26 個知識點,涵蓋語法特性、集合框架、異常處理、多線程、JVM 基礎等方向,適合面試複習與知識查漏補缺。
可以,但只能有一個 public 類,且文件名必須與該 public 類名完全一致。非 public 類無數量限制。
兩種主流方式:
outer:),內層使用 break outer;boolean found = false;,外層循環條件加入 && !found,內層設置 found = true; break;推薦使用標誌位,代碼可讀性更好,避免濫用標籤導致「面條代碼」。
| 比較方式 | 基本類型 | 引用類型 |
|---|---|---|
| == | 比較值 | 比較內存地址 (引用是否指向同一對象) |
| equals() | 不適用 | 比較對象內容 (需類重寫,如 String、Integer 已重寫) |
| 維度 | 靜態變量 (static) | 實例變量 |
|---|---|---|
| 歸屬 | 類屬級 | 對象屬級 |
| 內存 | 方法區 (元空間) | 堆內存 |
| 生命周期 | 類加載到類卸載 | 對象創建到 GC 回收 |
| 調用方式 | 類名.變量 / 對象.變量 | 對象.變量 |
| 共享性 | 所有實例共享一份 | 每個實例獨有 |
不能。static 方法屬於類,加載時無需實例;非 static 方法屬於對象,需實例存在才能調用。static 方法中無 this 引用。
| 特性 | int | Integer |
|---|---|---|
| 類型 | 基本類型 | 包裝類 (引用類型) |
| 默認值 | 0 | null |
| 內存 | 棧 | 堆 |
| 適用場景 | 計算、邏輯判斷 | 集合泛型、Web 表單、需 null 語義場景 |
自動裝箱/拆箱:JDK 1.5+ 支持自動轉換,但頻繁轉換影響性能,高併發場景建議顯式控制。
| 修飾符 | 同類 | 同包 | 子類(異包) | 其他包 |
|---|---|---|---|---|
| public | ✓ | ✓ | ✓ | ✓ |
| protected | ✓ | ✓ | ✓ | ✗ |
| default (無) | ✓ | ✓ | ✗ | ✗ |
| private | ✓ | ✗ | ✗ | ✗ |
| 維度 | Overload 重載 | Override 重寫 |
|---|---|---|
| 發生位置 | 同一類 / 父子類 | 父子類之間 |
| 方法名 | 相同 | 相同 |
| 參數列表 | 必須不同 | 必須相同 |
| 返回類型 | 可不同 | 兼容/相同 (協變返回) |
| 異常 | 無限制 | 子類異常範圍 ≤ 父類 |
| 訪問權限 | 無限制 | 子類權限 ≥ 父類 |
| 綁定時間 | 編譯期 (靜態) | 運行期 (動態) |
不能。構造器不參與繼承,子類無法覆蓋父類構造器,但可通過 super() 調用。構造器可 overload (重載)。
extends)static void main(String[] args) 方法,可直接運行四大特徵核心:封裝隱藏細節,繼承復用擴展,多態統一接口不同行為,抽象提取共性忽略細節。
父類/接口引用指向子類/實現類對象。編譯期看左邊 (引用類型),運行期看右邊 (實例類型)。動態綁定由 JVM 方法表分發實現。
byte(1B) / char(2B) / short(2B) / int(4B) / long(8B) / float(4B) / double(8B) / boolean(~1bit)
| 關鍵字 | 作用 | 典型場景 |
|---|---|---|
| final | 修飾類/方法/變量:不可繼承/覆蓋/修改 | 常量、不可變類、模板方法 |
| finally | 異常處理塊:無論是否異常必執行 | 資源關閉、鎖釋放、清理邏輯 |
| finalize() | Object 方法:GC 前調用 (已棄用) | JDK 9+ 標記 @Deprecated,不建議依賴 |
Throwable
├── Error (系統級,不可恢復:OOM, StackOverflow)
└── Exception (程序級,可恢復)
├── RuntimeException (非受檢:NPE, 索引越界, 類轉換)
└── Checked Exception (受檢:IOException, SQLException)
NullPointerException 空指針ArrayIndexOutOfBoundsException 數組越界ClassCastException 類轉換異常IllegalArgumentException 非法參數NumberFormatException 數字格式化異常try-catch:捕獲處理throws:方法簽名聲明拋出throw:主動拋出異常實例finally:最終執行塊| 方法 | 所屬類 | 釋放鎖 | 喚醒方式 | 典型用途 |
|---|---|---|---|---|
| sleep() | Thread | 不釋放 | 時間到/中斷 | 暫停執行、讓出 CPU |
| wait() | Object | 釋放 | notify()/notifyAll()/中斷 | 線程間通信、條件等待 |
核心:wait() 必須在 synchronized 塊中調用,否則拋 IllegalMonitorStateException。
start():創建新線程,由 JVM 調度執行 run()。
run():普通方法調用,不會創建新線程,在當前線程同步執行。
| 維度 | HashMap | Hashtable |
|---|---|---|
| 線程安全 | 非線程安全 | 同步方法,線程安全 |
| Null 鍵/值 | 允許一個 null key,多個 null value | 不允許 null |
| 繼承體系 | Map 接口 (JDK 1.2) | Dictionary 類 (舊版) |
| 性能 | 高 | 低 (全表鎖) |
| 遍歷方式 | Iterator (fail-fast) | Enumerator + Iterator |
多線程環境推薦 ConcurrentHashMap (JDK 8+ CAS + synchronized 細粒度鎖)。
| 集合 | 父接口 | 元素特性 | 存取特點 |
|---|---|---|---|
| List | Collection | 有序、可重複 | 索引快速隨機訪問 |
| Set | Collection | 無序、不可重複 | 基於 hashCode/equals 去重 |
| Map | Map | Key 唯一、Value 可重複 | Key 快速查找 Value |
JVM 通過 ClassLoader 及其子類實現類加載,遵循雙親委派模型:Bootstrap → Extension → Application → Custom。生命周期:加載 → 驗證 → 準備 → 解析 → 初始化 → 使用 → 卸載。
自動檢測對象是否可達 (GC Roots 可達性分析),回收不可達對象內存。主流算法:標記-清除、標記-整理、複製、分代收集 (新生代/老年代)。
| 區域 | 存儲內容 | 生命周期 | 線程隔離 |
|---|---|---|---|
| Stack (棧) | 局部變量、方法幀、引用 | 隨方法調用/返回 | 線程私有 |
| Heap (堆) | 對象實例、數組 | GC 管理 | 線程共享 |
建議配合《Java 核心技術》、《Effective Java》、《深入理解 JVM》系統學習,實戰中多思考「為什麼這樣設計」與「邊界場景如何表現」。