HelloWorld 是每個 Java 開發者的起點。看似簡單的幾行代碼,實則蘊含了包機制、類聲明、主方法簽名、標準輸出等核心語法規則。本文逐行解剖標準 HelloWorld,並通過 8 個實驗演示修改關鍵字後的編譯/運行行為,構建完整的錯誤認知地圖。
// 目錄結構:E:\javalession\base\src\lession1\HelloWorld.java
package lession1;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
package lession1;:聲明包,對應物理目錄 lession1,影響類全限定名(lession1.HelloWorld)與訪問路徑public class HelloWorld:public 要求文件名 必須 為 HelloWorld.java(大小寫敏感),單文件最多一個 public 類public static void main(String[] args):JVM 啟動入口,規則鐵律:
public:JVM 外部調用需可見static:無需實例直接調用void:無返回值String[] args:命令行參數數組,args 可改名,String args[] 亦合法final、拋出異常(throws Exception)System.out.println(...):java.lang.System 無需 import,out 為 PrintStream,println 輸出並換行| 實驗 | 修改內容 | 編譯 | 運行 | 核心錯誤信息 |
|---|---|---|---|---|
| 1 | 去掉類 public | ✅ | ✅ | 類變包私有,同包可用,跨包不可見 |
| 2 | 類名改 helloWorld(小寫) | ✅ | ❌ | Error: Could not find or load main class lession1.HelloWorld(文件名仍為 HelloWorld.java,類名不匹配) |
| 3 | 文件名改 helloWorld.java | ❌ | - | class HelloWorld is public, should be declared in a file named HelloWorld.java |
| 4 | main 去掉 public | ✅ | ❌ | Error: Main method not found in class lession1.HelloWorld, please define the main method as: public static void main(String[] args) |
| 5 | main 去掉 static | ✅ | ❌ | 同實驗 4,JVM 找不到靜態 main |
| 6 | main 改名 mainABC | ✅ | ❌ | 同實驗 4,入口方法名固定為 main |
| 7 | 參數改 String(非數組) | ✅ | ❌ | 同實驗 4,參數類型必須 String[] |
| 8 | 參數寫法 String args[] | ✅ | ✅ | 合法等價寫法,無影響 |
public final static void main(String[] args) throws IOException, Exception {
// 極簡調試:所有受檢/非受檢異常直接拋出,控制台打印堆棧
}
src/lession1/HelloWorld.javabin/lession1/HelloWorld.classjava -cp bin lession1.HelloWorldpublic 類強制要求NoClassDefFoundErrorpublic static void main(String[]),任何修改導致 JVM 無法識別入口throws Exception:學習階段簡化異常處理,專注業務邏輯從 HelloWorld 開始,嚴守語法規範、理解編譯與運行雙階段檢查機制、建立目錄-包-類的空間映射認知,是通往 Java 精通之路的堅實基石。