try-catch-finally 結構:finally 块無論是否拋出異常必執行;若 try 中有 return,finally 先執行再返回。catch 參數列表不得有繼承關係,否則編譯報錯。throw 可在 catch 中重新拋出異常,保持異常鏈。throws 聲明拋出異常類型,調用者需處理或繼續拋出。子類重寫父類方法時 throws 限制:
printStackTrace() 獲取多重調用棧異常傳播路徑。assert 用於開發期狀態檢查,非業務邏輯分支,可用 -ea 啟用。try (Resource r = ...) 自動調用 AutoCloseable.close(),支持多資源分號分隔,簡化 finally 關閉邏輯。Scanner 配合 FileInputStream 讀取文件,Scanner 實現 AutoCloseable 可自動關閉底層流。| 接口 | 特性 | 典型實現 | 適用場景 |
|---|---|---|---|
List | 有序、可重複、索引訪問 | ArrayList(數組)、LinkedList(鏈表) | 需隨機訪問用 ArrayList;頻繁首尾增刪用 LinkedList |
Set | 無序、唯一 | HashSet(哈希表)、TreeSet(紅黑樹) | 去重、快速查找 |
Queue | FIFO/雙端 | LinkedList、ArrayDeque | 生產消費、任務調度 |
Deque | 雙端隊列/棧 | ArrayDeque | 棧操作、滑動窗口 |
add/remove/element:失敗拋異常。offer/poll/peek:失敗返回特殊值(false/null),推薦生產環境使用。| 實現 | 底層結構 | 有序性 | 線程安全 | 典型場景 |
|---|---|---|---|---|
HashMap | 數組+鏈表/紅黑樹 | 無序 | 否 | 高性能鍵值存取 |
TreeMap | 紅黑樹 | 鍵自然序/Comparator | 否 | 有序遍歷、範圍查詢 |
Hashtable | 數組+鏈表 | 無序 | 是(全表鎖) | 歷史遺留 |
Properties | 繼承 Hashtable | 無序 | 是 | 配置文件讀寫 |
Properties 常用 setProperty/getProperty 操作字串鍵值。
keySet()、values()、entrySet() 三種視圖。Collections.sort(List) 要求元素實現 Comparable;或傳入 Comparator 定製排序。Comparable 或外部 Comparator。<T>:類型參數化,編譯期類型檢查,運行期類型擦除。(params) -> body,簡化函數式接口實現,forEach、stream 常用。Iterable 父接口統一 iterator(),支持增強 for 循環。本周以理論梳理為主,重點攻克異常處理細節陷阱(捕獲順序、finally 執行時機、try-with-resources)與集合框架選型依據(數組 vs 鏈表、哈希 vs 紅黑樹、線程安全與否)。下周將進入實戰編碼階段,通過項目驗證知識點。