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

Java 核心類庫與包機制概覽:java.lang、java.util、java.io、java.nio 核心包深度導覽

     編輯:Java 相關知識

Java 標準庫(JDK API)龐大而精密,掌握核心包結構、關鍵類職責、常用 API 組合是高效開發的前提。本文按功能域梳理 java.lang、java.util、java.io、java.nio、java.net、java.time、java.util.concurrent 七大核心包,附高頻類速查表與避坑指南。

一、java.lang:語言基石,無需導入自動可用

類/介面核心職責高頻方法/最佳實踐
Object所有類根類equals/hashCode/toString 必須成對重寫;wait/notify 同步基石
String不可變字符序列拼接用 StringBuilder;池化 intern() 謹慎用
StringBuilder/Buffer可變字符序列單線程 Builder,多線程 Buffer
Math/StrictMath數學運算random()、round()、hypot() 避免溢位
System系統屬性/IO/GCcurrentTimeMillis/nanoTime、arraycopy 高效複製
Thread/Runnable線程基礎優先用線程池;ThreadLocal 變量隔離
Class運行時類型元數據反射入口;forName 載入類
Throwable/Exception/Error異常體系根受檢 vs 非受檢選型;異常鏈保留
Comparable/Comparator排序契約compareTo 與 equals 一致性
Enum枚舉類型基類單例模式最佳實現;values() 遍歷

二、java.util:集合框架、工具類、日期舊 API

1. 集合框架核心介面與實現選型

Collection
 ├─ List (有序、可重複)     → ArrayList(隨機訪問)、LinkedList(首尾增刪)、Vector(舊、同步)
 ├─ Set (無序、不可重複)     → HashSet(無序)、LinkedHashSet(插入序)、TreeSet(自然序/Comparator)
 └─ Queue (佇列)             → ArrayDeque(雙端)、PriorityQueue(優先級)、LinkedList

Map (鍵值對)
 ├─ HashMap (無序、O(1))     → JDK 8 紅黑樹優化碰撞
 ├─ LinkedHashMap (插入/訪問序) → LRU 快取基石
 ├─ TreeMap (有序、紅黑樹)   → 範圍查詢、floor/ceiling
 └─ ConcurrentHashMap (高併發) → JDK 8 CAS+synchronized 分段鎖

2. 核心工具類

  • Collections:sort/shuffle/unmodifiableList/singletonList/emptyList、binarySearch、frequency。
  • Arrays:sort/parallelSort/stream/toString/deepEquals/copyOf。
  • Objects (JDK 7+):requireNonNull/equals/hash/isNull/nonNull/toString 防空神器。
  • Optional (JDK 8+):of/empty/ofNullable/ifPresent/orElse/orElseGet/orElseThrow/map/flatMap/filter — 消除 NPE,函數式風格。

3. 日期舊 API(維護項目常見)

  • Date:毫秒時間戳,可變,多方法已棄用。
  • Calendar:getInstance/add/set/get,月份 0-based,線程不安全。
  • SimpleDateFormat:線程不安全,多線程必用 ThreadLocal 或 JDK 8 DateTimeFormatter。

三、java.io:傳統阻塞 IO,流/裝飾器模式

流類型抽象基類典型實現用途
字節輸入InputStreamFileInputStream、ByteArrayInputStream、BufferedInputStream二進制讀取
字節輸出OutputStreamFileOutputStream、ByteArrayOutputStream、BufferedOutputStream二進制寫入
字符輸入ReaderFileReader、InputStreamReader(字節轉字符)、BufferedReader文本讀取
字符輸出WriterFileWriter、OutputStreamWriter、BufferedWriter、PrintWriter文本寫入

裝飾器鏈標準姿勢:new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")) — 內到外:源 → 轉碼 → 緩衝。

四、java.nio:非阻塞 IO、緩衝區、通道、選擇器

  • Buffer:ByteBuffer/CharBuffer/IntBuffer... — flip/clear/compact/remaining/limit/position 狀態機,allocateDirect 堆外內存零拷貝。
  • Channel:FileChannel/SocketChannel/ServerSocketChannel/DatagramChannel — 雙向、可非阻塞、支援分散/聚集讀寫。
  • Selector:select()/selectedKeys() — 多路復用核心,單線程管理成千上萬連接。
  • Path/Files (JDK 7+):Paths.get/Files.readAllLines/walk/copy/move/delete/attributes — 現代文件系統 API,替代 File。

五、java.net:網絡編程基礎

  • InetAddress:IP 解析、getByName/getAllByName/isReachable。
  • URL/URI:資源定位/標識,openStream/openConnection。
  • HttpURLConnection:HTTP 客戶端基礎,setRequestMethod/setDoOutput/getInputStream。
  • Socket/ServerSocket:TCP 阻塞套接字,accept/getInputStream/getOutputStream。
  • DatagramSocket/DatagramPacket:UDP 無連接。

六、java.time (JDK 8+):現代日期時間 API,不可變、線程安全、領域驅動設計

遷移鐵律:新代碼全面使用 java.time,舊代碼逐步替換;Date.toInstant()、Instant.atZone() 雙向轉換。

七、java.util.concurrent (JUC):高併發工具箱

  • 執行器:ExecutorService/ThreadPoolExecutor/ScheduledThreadPoolExecutor/ForkJoinPool。
  • 同步器:CountDownLatch/CyclicBarrier/Semaphore/Phaser/Exchanger。
  • 鎖:ReentrantLock/ReadWriteLock/StampedLock/Condition。
  • 原子類:AtomicInteger/LongAdder/LongAccumulator/AtomicReference。
  • 併發集合:ConcurrentHashMap/CopyOnWriteArrayList/ConcurrentLinkedQueue/BlockingQueue(ArrayBlockingQueue/LinkedBlockingQueue)。
  • Future/CompletableFuture:異步編程核心,supplyAsync/thenApply/thenCompose/allOf/anyOf/exceptionally。
  • 並行流:collection.parallelStream()、Arrays.parallelSort() — ForkJoinPool 共用池,CPU 密集型慎用。

八、包導入最佳實踐

  1. 顯式導入單類:import java.util.List; — 避免 import java.util.*; 命名衝突、編譯緩慢、可讀性差。
  2. 靜態導入常量/工具方法:import static java.util.Collections.emptyList; — 僅用於極高頻、無歧義場景。
  3. 模塊化:JDK 9+ module-info.java 聲明 requires java.base; exports com.my.app; — 封裝內部 API。

Java 核心類庫是開發者的兵器庫。建議:按功能域建立心智索引,遇到問題先查對應包的「高頻類速查表」,再翻官方文檔。內化本文七大包核心類職責,能讓你在茫茫 API 海中精準定位、高效解決問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類語義關鍵方法
Instant時間線上的瞬間 (UTC)now()/toEpochMilli()/plusSeconds()
LocalDate/Time/DateTime無時區日期/時間/日期時間now()/of()/plusDays()/format()
ZonedDateTime帶時區日期時間ofInstant/withZoneSameInstant
Duration/Period時間量/日期量between()/toHours()/toDays()
DateTimeFormatter格式化/解析,線程安全ofPattern/ISO_LOCAL_DATE
ZoneId/ZoneOffset時區/偏移量systemDefault()/of("Asia/Shanghai")