任何語言都面臨:命名衝突、源檔組織、第三方庫依賴、編譯連結。Java 透過包與JAR解決。
package shuo.laoma;
public class Hello { ... }
package 陳述必須在源檔最前(註解除外)E:\src\shuo\laoma\Hello.javaorg.apache、com.googleshuo.laoma)java.util.Arrays.sort(arr)import 引入:import java.util.Arrays; 或 import java.util.*;java.lang 包類(String、System)自動引入,無需 importimport java.util.*.* 無效Ctrl+Shift+O| 修飾符 | 可見範圍 |
|---|---|
| private | 同一類 |
| default (包私有) | 同一直接包 |
| protected | 同包 + 子類(即使不同包) |
| public | 任意處 |
注意:子包不是同一個包。shuo.laoma 與 shuo.laoma.inner 互不相干,無法互訪包私有成員。
# 在編譯輸出根目錄下 (如 E:\bin) jar -cvf hello.jar shuo
-c 建立、-v 顯示過程、-f 指定檔名-classpath 或 -cp;、Linux/Mac :javac 將 .java → .class (位元碼)import 與 classpath 解析每個類的完全限定名.*) 衝突時編譯報錯,需明確指定java 命令啟動 JVM,載入主類.classimport 僅為編譯時概念,運行時只看完全限定名包解決命名與組織,JAR 解決發布與依賴,Classpath 連結編譯與運行。掌握這三者,是構建大型 Java 專案、排查 ClassNotFoundException/NoClassDefFoundError 的基石。
下一節將介紹 Java 中表示特定資料集合的機制——枚舉。