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

《Java 編程思想》閱讀筆記(三):持有對象與異常處理核心要點

     編輯:Java 綜合教學

《Java 編程思想》筆記三:第 11-12 章核心精華

第 11 章:持有對象 — 容器框架

容器特點適用場景
ArrayList動態數組,隨機訪問 O(1),擴容 1.5 倍大量讀、少量寫,末尾增刪
LinkedList雙向鏈表,首尾增刪 O(1),隨機訪問 O(n)頻繁頭尾/中間增刪,實現 Queue/Deque/Stack
HashSet基於 HashMap,無序、去重、查找 O(1)去重、快速判斷存在性
TreeSet紅黑樹,有序、去重、O(log n)需要排序的無重複集合
HashMap數組+鏈表/紅黑樹,Key 唯一,查找 O(1)鍵值映射、高頻查找
TreeMap紅黑樹,Key 有序需要按 Key 排序遍歷
Queue/DequeLinkedList 實現,FIFO/雙端生產消費、BFS、滑動窗口
StackVector 子類,LIFO,同步遞歸替換、表達式求值(建議用 Deque)

核心選型口訣

  • 要索引、常讀 → ArrayList
  • 要增刪、當隊列/棧 → LinkedList
  • 要去重、快查 → HashSet
  • 要去重、要序 → TreeSet
  • 鍵值映射、常查 → HashMap
  • 鍵值映射、要序 → TreeMap

泛型帶來的收益

  • 編譯期類型檢查,取出無需轉型
  • 統一 API,減少 ClassCastException
  • 基本類型自動裝箱/拆箱(注意性能)

第 12 章:異常處理 — 錯誤處理哲學

核心理念

「結構不佳的代碼不能運行。」—— Java 強制在編譯期處理受檢異常,逼迫開發者正視錯誤路徑。

異常體系

Throwable
├── Error(系統級,不可恢復:OOM、StackOverflow)
└── Exception
    ├── RuntimeException(非受檢:空指針、越界、類轉換)
    └── 受檢異常(IOException、SQLException、ClassNotFoundException…)

最佳實踐原則

  1. 拋早捕晚:底層拋出具體異常,上層業務統一捕獲轉換/處理。
  2. 異常鏈:throw new BizException("msg", cause) 保留堆棧。
  3. 不吞異常:空 catch 是大忌;至少記錄日志再拋出。
  4. 資源關閉:try-with-resources(Java 7+)自動調用 close()。
  5. 自定義異常:區分業務異常(受檢)與系統異常(Runtime),便於調用方針對性處理。
  6. 異常不是流控:不要用異常控制正常業務分支(性能差、語義不清)。
  7. 文檔化:@throws 聲明方法可能拋出的受檢異常及條件。

Java 7+ 多重捕獲與資源管理

try (InputStream in = new FileInputStream("a.txt");
     OutputStream out = new FileOutputStream("b.txt")) {
    // 代碼
} catch (IOException | SecurityException e) {
    log.error("文件複製失敗", e);
    throw new BizException(e);
}

掌握容器選型邏輯與異常處理哲學,能讓代碼既「快」又「穩」,是從「會用 API」進階到「懂設計」的關鍵一步。

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