java.lang 是 Java 程式自動匯入的核心套件,定義了語言運行的基礎契約。本文系統整理其中關鍵介面與類別,並解析類別命名的三種形式(完整限定名、規範名、二進位名),協助開發者深入理解 Java 型別系統基石。
| 介面 | 用途 | 關鍵實作類別 |
|---|---|---|
Appendable | 字元追加目標,Formatter 輸出目的地 | StringBuilder, StringBuffer, PrintStream, Writer |
CharSequence | 唯讀字元序列統一存取 | String, StringBuilder, StringBuffer |
Cloneable | 標記介面,允許 Object.clone() 浅層複製 | 自訂類別實作 |
Comparable<T> | 自然排序契約,回傳負/零/正代表小於/等於/大於 | String, Integer, Date, 自訂類別 |
Iterable<T> | 支援增強 for 迴圈 (for (E e : coll)) | Collection, 自訂容器 |
Runnable | 執行緒任務單元,Thread 建構子參數 | Thread, 自訂任務 |
Readable | 字元輸入來源 | BufferedReader, InputStreamReader |
Thread.UncaughtExceptionHandler | 執行緒未捕獲例外處理器 | 自訂處理邏輯 |
八大基本型別對應包裝類別,提供型別轉換、常數、解析/格式化等工具方法:
Boolean, Byte, Character, Short, Integer, Long, Float, DoubleJava char 為 UTF-16 碼元。補充字元 (Supplementary Characters, U+10000~U+10FFFF) 由「高位代理碼元」(High Surrogate, U+D800~U+DBFF) 與「低位代理碼元」(Low Surrogate, U+DC00~U+DFFF) 組成:
int codePoint = (high - 0xD800) << 10 + (low - 0xDC00) + 0x10000;
處理字串時建議使用 codePointAt(), codePointCount(), toChars() 等碼點級 API,避免將代理碼元視為獨立字元。
Class 實例ClassLoader 實例化getMethods(), getFields(), newInstance() 等org.javaplus.jdkoverview.SubClass.InnerClass 為例):| 命名形式 | 範例 | 用途 |
|---|---|---|
| 完整限定名 (Fully Qualified Name) | org.javaplus.jdkoverview.SubClass.InnerClass | 原始碼引用、Javadoc |
| 規範名 (Canonical Name) | org.javaplus.jdkoverview.OuterClass.InnerClass | Class.getCanonicalName(),人類可讀 |
| 二進位名 (Binary Name) | org.javaplus.jdkoverview.OuterClass$InnerClass | .class 檔名、JVM 內部、Class.forName() 參數 |
僅為 JIT 編譯器佔位符,若 JVM 啟動未載入 JIT 則不作用。應用程式不應直接呼叫。
package org.javaplus.jdkoverview;
public class OuterClass {
public class InnerClass { }
}
public class SubClass extends OuterClass { }
SubClass.InnerClass (繼承自 OuterClass) 的三種名稱:
org.javaplus.jdkoverview.SubClass.InnerClassorg.javaplus.jdkoverview.OuterClass.InnerClassorg.javaplus.jdkoverview.OuterClass$InnerClassSystem:標準輸入/輸出/錯誤、屬性、環境變數、arraycopy(), currentTimeMillis(), gc()Math / StrictMath:數學函數String / StringBuilder / StringBuffer:字串處理Thread / ThreadGroup / ThreadLocal:執行緒相關Throwable / Error / Exception / RuntimeException:例外體系Package:套件版本資訊Process / ProcessBuilder:外部程序控制Runtime:運行環境單例SecurityManager:安全沙箱(舊版 Applet 相關)StackWalker (JDK 9+):高效堆疊追蹤java.lang 定義了 Java 型別系統的骨架。熟悉核心介面契約、包裝類別細節、Class/ClassLoader 機制與三種命名形式,對反射、動態載入、序列化、模組化開發至關重要。