初學 Java 常見三個疑惑:為何程式碼中出現兩個 main?一個檔案只能有一個 public class?多個 .java 檔如何組合執行?
public static void main(String[] args) 是 JVM 啟動程式的標準進入點,每個類別最多只能有一個這個簽名的方法(否則編譯錯誤:重複定義)。main 多載,如 void main()、void main(int x),但 JVM 不會自動呼叫它們。public static void main(String[] args) 完全合法。執行時透過 java ClassName 指定啟動哪個類別的 main。public class,其名稱必須與檔案名稱完全一致(不含 .java)。因為編譯器以檔案名稱定位公共類別,若有兩個 public class,編譯器無法決定輸出哪個 .class 檔案名稱。class (package-private),編譯後各產生對應 .class 檔案。javac A.java B.java 或 javac *.java,產生 A.class, B.class。java A (含 main 的類別)。JVM 會自動載入 A 依賴的 B 類別(需在同一 classpath 下)。package,使用建構工具 (Maven/Gradle) 管理編譯、打包、依賴。// B.java
package com.example;
public class B {
public void sayHi() { System.out.println("Hello from B"); }
}
// A.java
package com.example;
public class A {
public static void main(String[] args) {
B b = new B(); // 建立 B 實例
b.sayHi(); // 呼叫 B 方法
}
}
理解這三點,Java 專案結構與執行機制就不再神秘。