abstract 與 final 不能同時修飾類。try-catch 後執行清理操作,無論是否拋出異常皆會執行(除非 JVM 退出)。Object 方法。垃圾回收器在清除物件前調用,供子類覆寫釋放系統資源(如檔案句柄、網絡連接)。不可預知調用時機,不建議依賴它釋放關鍵資源,應使用 try-with-resources 或顯式 close()。匿名內部類不能 extends 其他類,但可implements 一個介面(隱含實作該介面)。本質上是隱式繼承某類或實作某介面的子類實例化語法糖。
最大區別在於是否持有外部類引用:
Outer.Inner in = new Outer().new Inner()。Outer.Nested n = new Outer.Nested();無法直接訪問外部類實例成員,僅能訪問靜態成員。詳細對比見:前端自由網分析
&:位運算符(按位與),也可作邏輯與但不具備短路特性。&&:邏輯與運算符,具備短路特性(左運算元為 false 時不評估右運算元)。| 特性 | HashMap | Hashtable |
|---|---|---|
| 繼承/實作 | 實作 Map 介面 | 繼承 Dictionary、實作 Map |
| 同步性 | 非同步(非執行緒安全) | 同步(執行緒安全) |
| Null 鍵/值 | 允許一個 null key、多個 null value | 不允許 null key/value |
| 效能 | 較快 | 較慢(同步開銷) |
| 迭代器 | fail-fast | enumerator 非 fail-fast |
單執行緒或並發控制外部化時首選 HashMap;需執行緒安全可用 Collections.synchronizedMap() 包裝或改用 ConcurrentHashMap。
java.util 介面,List、Set、Queue 父介面,定義集合通用操作。java.util 工具類,提供靜態方法:排序、搜尋、同步包裝、不可修改視圖等。斷言為包含布林表達式的語句,假定為 true,若為 false 拋出 AssertionError。僅用於除錯/開發階段,預設停用。
assert (a > 0); // a <= 0 拋出錯誤
assert (a > 0) : "a must be positive"; // 帶訊息
javac -source 1.4 Test.javajava -ea Test 或 -enableassertionsjava -da Test-esa / -dsa適用場景:私有方法參數驗證、預期不可到達代碼路徑、後置條件檢查。不適用:公有方法參數驗證(必須顯式檢查)、改變程式狀態的邏輯。
GC = Garbage Collector。Java 程式設計師無需手動管理記憶體,GC 自動回收不可達物件。可主動建議回收:
System.gc();
Runtime.getRuntime().gc();
但 JVM 不保證立即執行。現代 GC(G1、ZGC、Shenandoah)採用分代、並發、區域化等先進演算法,大幅降低停頓時間。