最小化 Hello World
// 檔案名:HelloJava.java (類名必須與檔案名一致)
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello Java!");
}
}
編譯與執行指令
> javac HelloJava.java // 編譯:產生 HelloJava.class (位元組碼)
> java HelloJava // 執行:啟動 JVM 載入類,執行 main 方法
Hello Java! // 標準輸出
核心機制解析
| 階段 | 工具 | 輸入 | 輸出 | 關鍵點 |
| 編譯 | javac | .java 原始碼檔 | .class 位元組碼檔 | 檔案名 = 公共類名;語法檢查、型別推導、生成符號表 |
| 執行 | java | 類全限定名 (無 .class) | 程式輸出 | 依據 CLASSPATH 搜尋類;載入 -> 驗證 -> 準備 -> 解析 -> 初始化 |
CLASSPATH 環境變數
java 命令依據 CLASSPATH (或 -cp 參數) 搜尋類檔案。
- 預設包含當前目錄
.,故同目錄下 HelloJava.class 可直接被找到。
- 生產環境建議顯式指定
-cp,避免環境變數汙染。
常見新手誤區
- 執行時加副檔名:
java HelloJava.class (錯) -> java HelloJava (對)。
- 類名與檔案名不符:
public class Main 存為 Hello.java -> 編譯報錯。
- 非 public 類可異名:一個 .java 可含多個非 public 類,檔案名匹配 public 類即可。
- main 方法簽名固定:
public static void main(String[] args),大小寫敏感,參數名可變但型別不可變。
進階:帶參數執行
> java HelloJava arg1 arg2 "arg with space"
// args[0]="arg1", args[1]="arg2", args[2]="arg with space"