在整個 JDK API 中,約包含 1,200 個包。從包名的第一個部分來看,主要分為三大類:java、javax 和 org。其中以 java 開頭的為 JDK 基礎語言包,javax 開頭的為擴展包(x 代表 extend),而 org 開頭的則是第三方組織提供的功能包。此外,還有一些以 com.sun 開頭的包,這是 Sun 公司提供的內部功能包,因版本變動大且不具兼容性,未在標準 JDK API 文檔中公開。
java.lang 是 Java 基礎語言包(lang 為 language 縮寫),包含 Java 編程所需的基本功能類別、介面等,是進行 Java 程式設計的基石。由於使用頻率極高,Java 語言預設會自動引入此包,無需額外 import。
Object 類別是 Java 語言的「靈魂」。除了 Object 本身,所有類別都是其子類別,即使不顯式寫繼承,系統也會自動繼承。這構成了 Java 單根繼承體系的唯一根節點,連陣列也實作了 Object 的方法。
正是這種單根繼承體系,讓 Java 能輕易實現多線程控制等複雜特性,也方便對整個語言體系進行更新維護。熟悉 Object 常用方法是每位程式設計師的必修課。
Object 中的預設實作極簡單:
public boolean equals(Object obj) {
return (this == obj);
}
這僅比較參考位址。實務上若需比較物件內容,必須覆寫 equals 方法。以下是標準覆寫範例:
public class MyEquals {
String name;
int n;
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (!(obj instanceof MyEquals)) return false;
MyEquals m = (MyEquals) obj;
if (!name.equals(m.name)) return false;
if (n != m.n) return false;
return true;
}
}
關鍵步驟:先判斷是否為同一物件,再用 instanceof 檢查型別,最後逐一比較屬性值。
finalize 與建構子功能相反,在 JVM 回收物件記憶體前自動調用,類似 C++ 的解構函數。若物件釋放時需執行特定操作(如關閉資源),可覆寫此方法。
回傳一個整數雜湊碼,主要用於集合框架快速判斷物件是否不同。規則:內容相同的物件 hashCode 必須相同;內容不同的物件 hashCode 可能相同(發生碰撞)。自訂類別若要存入集合,覆寫此法可提升效能。
輸出物件時系統自動調用。Object 預設回傳 類別名@雜湊碼十六進位。為讓輸出更易讀,建議在自訂類別中覆寫此方法,格式化輸出內容。
Math 類別集中了常用數學常數與方法,皆為 static 靜態成員,呼叫極為方便。範例:
public class MathDemo {
public static void main(String[] args) {
int m = -10;
int n = Math.abs(m);
System.out.println("絕對值是:" + n);
}
}
更多方法(如 sqrt、pow、random 等)請參閱 JDK API 文檔。