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

Java 基礎核心概念:final/finally/finalize、重載與重寫、常用集合框架詳解

     編輯:Java 綜合教學

一、final、finally、finalize 三者辨析

1. final 關鍵字

  • 修飾變數: 一經初始化(宣告時或建構子中),值不可變更。基本類型值不變,引用類型地址不變(但物件內容可變)。
  • 修飾方法: 禁止子類覆寫,鎖定演算法實作,亦允許編譯器內聯優化。
  • 修飾類別: 禁止被繼承,如 String、Integer 等不可變類別。

2. finally 關鍵字

配合 try/catch 使用,無論是否拋出異常、是否有 return 語句,finally 區塊都會在控制權轉移前執行。典型用途:關閉資源(流、連接、鎖)確保不洩漏。

3. finalize() 方法

屬於 Object 類別,GC 在回收物件前調用。不建議依賴: 調用時間不確定、可能導致物件復活、嚴重影響 GC 效能。Java 9 標記為棄用,建議改用 try-with-resources 或 Cleaner 機制。

@Override
protected void finalize() throws Throwable {
    try { /* 釋放原生資源、關閉檔案 */ }
    finally { super.finalize(); }
}

二、方法重載 vs 重寫

特性重載重寫
定義同一類別中,方法名相同,參數列表不同(類型、個數、順序)子類別重新定義父類別方法,方法簽名(名稱、參數、返回型別)完全一致
返回型別可不同必須相同或為協變型別
存取修飾符無限制不能比父類別更嚴格(如父 protected,子不能 private)
拋出異常無限制不能拋出比父類別更廣的檢查型異常
多型性編譯期靜態綁定執行期動態綁定,體現多型

三、常用集合框架速覽

1. ArrayList - 動態陣列

  • 底層:Object[] 陣列,預設容量 10,擴容 1.5 倍。
  • 特點:隨機存取快(O(1)),插入/刪除慢(需位移),非同步。
  • 適用:頻繁讀取、尾部新增場景。

2. Vector - 同步動態陣列

  • 方法皆 synchronized,執行緒安全但效能低,已被 Collections.synchronizedList 或 CopyOnWriteArrayList 取代。

3. LinkedList - 雙向鏈表

  • 實作 List、Deque,頭尾增刪 O(1),隨機存取 O(n)。
  • 適合頻繁頭尾操作、佇列/棧場景。

4. HashMap - 雜湊表

  • JDK 8:陣列 + 鏈表/紅黑樹,put/get 平均 O(1)。
  • 非同步、允許 null key/value,無序。
  • 核心參數:負載因子 0.75,擴容閾值 = 容量 × 負載因子。

程式碼速查

// ArrayList
List<String> list = new ArrayList<>();
list.add("one"); list.add("two");
System.out.println(list.get(0)); // "one"

// LinkedList + Iterator
LinkedList<String> dll = new LinkedList<>();
dll.add("two"); dll.add("one");
for (String s : dll) System.out.println(s);

// HashMap
Map<String, String> map = new HashMap<>();
map.put("one", "1"); map.put("two", "2");
System.out.println(map.get("one")); // "1"

選型建議

  • 預設首選 ArrayList、HashMap、HashSet。
  • 需執行緒安全:Collections.synchronizedXxx、ConcurrentHashMap、CopyOnWriteArrayList。
  • 頻繁頭尾操作:LinkedList 或 ArrayDeque。
  • 需有序:LinkedHashMap/Set(插入序)、TreeMap/Set(自然序/自訂序)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved