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

Java 開發必知的 10 大核心類深度解析

     編輯:Java 相關知識

Java 標準庫龐大,但實際開發中高頻使用的核心類相對固定。本文精選 10 個最基礎、最常用的類,從設計定位、核心方法到實戰場景進行深度解析,助你建立扎實的 Java 核心知識體系。

1. java.lang.String —— 字符串王者

  • 定位:不可變字符序列,所有字符串字面值均為 String 實例。
  • 核心特性:final 類、char[] 底層存儲(Java 9+ 為 byte[] + coder)、常量池優化。
  • 高頻方法:split()、substring()、format()、join()(Java 8+)、strip()(Java 11+)。
  • 避坑指南:拼接用 StringBuilder;比較用 equals() 而非 ==;注意 substring 共享底層數組導致內存洩漏(Java 7+ 已修復)。

2. java.lang.System —— 系統級工具箱

  • 定位:final 類,不可實例化,提供標準輸入/輸出/錯誤流、環境變量、系統屬性、GC 提示、數組複製等。
  • 核心字段:in、out、err(PrintStream)。
  • 高頻方法:currentTimeMillis()、nanoTime()、arraycopy()、getProperty()、getenv()。
  • 實戰場景:性能基準測試用 nanoTime();配置外部化讀取 getProperty();高效數組拷貝用 arraycopy()。

3. java.lang.Exception —— 異常體系根基

  • 定位:所有異常的父類(除 Error 外),分為 Checked(受檢)與 Unchecked(非受檢)兩大分支。
  • 核心結構:Throwable → Exception → RuntimeException。
  • 最佳實踐:業務邏輯拋 Checked 異常強制調用者處理;編程錯誤拋 RuntimeException;自定義異常繼承 Exception 或 RuntimeException 並提供多構造器。

4. java.util.ArrayList —— 動態數組首選

  • 定位:基於動態擴容數組實現 List 接口,非線程安全,隨機訪問 O(1),插入刪除 O(n)。
  • 擴容機制:默認容量 10,擴容 1.5 倍(newCapacity = oldCapacity + (oldCapacity >> 1))。
  • 對比 Vector:Vector 同步化、擴容 2 倍,性能較差,已被 Collections.synchronizedList 或 CopyOnWriteArrayList 替代。

5. java.util.HashMap —— 鍵值對存儲王者

  • 定位:基於數組+鏈表/紅黑樹實現 Map 接口,非線程安全,允許 null key/value。
  • 核心參數:默認容量 16、負載因子 0.75、鏈表轉紅黑樹閾值 8、退化閾值 6。
  • JDK 8 優化:引入紅黑樹解決哈希衝突最壞 O(n) 問題;putVal 尾插法避免擴容死循環。
  • 線程安全替代:ConcurrentHashMap(分段鎖/CAS)、Collections.synchronizedMap。

6. java.lang.Object —— 萬物之父

  • 定位:所有類的隱式父類,定義通用協議:equals/hashCode 契約、toString、clone、finalize(已棄用)、wait/notify 協作機制。
  • 重寫鐵律:覆寫 equals 必須覆寫 hashCode;toString 建議輸出業務關鍵字段便於調試。

7. java.lang.Thread —— 並發執行單元

  • 定位:代表執行緒,可繼承 Thread 或實現 Runnable/Callable 接口。
  • 核心狀態:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。
  • 現代替代:線程池(ExecutorService)、CompletableFuture、虛擬線程(Java 21+)更推薦,避免手動管理線程生命周期。

8. java.lang.Class —— 反射入口

  • 定位:運行時類型信息載體,由類加載器創建,無公共構造器。
  • 獲取方式:Class.forName()、obj.getClass()、Type.class。
  • 核心能力:獲取構造器/方法/字段/註解、動態實例化、泛型擦除後類型擷取,是框架開發(Spring、MyBatis、Jackson)基石。

9. java.util.Date —— 歷史包袱與替代

  • 定位:JDK 1.0 日期時間類,大多方法已棄用,線程不安全,設計缺陷多(月份 0-based、年份 1900-based)。
  • 現代替代:java.time 包(LocalDateTime、ZonedDateTime、Instant、DateTimeFormatter)不可變、線程安全、API 清晰,Java 8+ 必須首選。
  • 互轉:Date.from(instant)、date.toInstant()。

10. java.util.Iterator —— 統一遍歷協議

  • 定位:替代 Enumeration 的通用遍歷接口,支援 hasNext()、next()、remove()(可選)、forEachRemaining()(Java 8+)。
  • 失效快速機制:集合結構變更時拋出 ConcurrentModificationException,需用 Iterator.remove() 安全刪除。
  • 增強 for 底層:編譯器語法糖,本質調用 Iterator。

總結對照表

類包核心角色線程安全現代替代/補充
Stringjava.lang不可變字符序列✓StringBuilder/StringJoiner
Systemjava.lang系統工具✓—
Exceptionjava.lang異常根類—自定義異常體系
ArrayListjava.util動態數組✗CopyOnWriteArrayList
HashMapjava.util雜湊映射✗ConcurrentHashMap
Objectjava.lang根類協議—Objects 工具類
Threadjava.lang執行緒—ExecutorService/Virtual Thread
Classjava.lang反射入口✓MethodHandle/VarHandle
Datejava.util舊日期時間✗java.time.*
Iteratorjava.util遍歷協議—Spliterator/Stream

掌握這 10 大類的設計哲學與實戰細節,是進階 Java 工程師的必修課。建議結合源碼閱讀,深入理解其內部機制。

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