第一個 Java 程序
本節我們將以Windows
操作系統為例,編寫并執行第一個Java
程序。在這之前,請確保你的操作系統上已經安裝了JDK
1. 編譯程序
大家可能有個疑問,為什么需要編譯程序呢?計算機不能直接執行我們編寫的源代碼嗎?
這是由于計算機只能識別由0和1組成的二進制代碼。需要通過編譯將源代碼轉換為計算機認識的二進制代碼。
1.1 Java 中的編譯
在 Java 中,程序不是直接被編譯為可執行文件,而是被編譯為字節碼文件, JVM
(Java虛擬機)在運行時執行字節碼文件。當我們使用 javac
編譯器時,Java 源代碼文件被編譯為字節碼文件,字節碼文件以擴展名 .class
的形式保存在磁盤上。當程序運行時,字節碼文件將被轉換為機器代碼,并在內存中執行。
總的來說,Java 源代碼需要被“轉換”兩次才能被計算機執行:
- Java 源代碼被編譯為字節碼:由 javac 前端編譯器完成;
- 字節碼被編譯為機器碼:由 JVM 的執行引擎完成。
下圖描述了一個Java
程序從編寫到編譯,再到執行的步驟:

1.2 快速執行一個程序
1.2.1 準備工作
為了確保我們人生中第一個 Java 程序能夠順利執行,請首先確認你已經完成了下面兩件事情:
- 已經在你的電腦上成功安裝
JDK
; - 有一個文本編輯器。(如 Windows 的記事本,Unix 的 vim)。
1.2.2 編寫源代碼
新建一個文本,輸入如下內容,將其命名為 HelloWorld.java
并保存
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Tips:
- 文件名必須與類名同名(類名就是上面第一行代碼中
class
后面的HelloWorld
),并且擴展名為.java
,文件名和類名都區分大小寫,所以請確保文件名和類名大小寫保持一致;- 類的命名約定以大寫字母開頭;
- 上述代碼中的所有符號,請使用英文半角;
- 別忽略了代碼第三行結尾的分號
;
。
下面為實操中的截圖。
打開記事本,輸入源代碼:

點擊文件 -> 保存,將文件保存到磁盤(此處保存在桌面上),注意:這里要將文件名命名為HelloWorld.java
,保存類型選擇所有文件,編碼選擇UTF-8
:

1.2.3 編譯后執行
現在,打開你常用的命令行工具。(如 Windows 上的命令提示符、MacOS 上的終端),并進入你剛剛保存 Java 源代碼的目錄。
在Windows
搜索欄中輸入cmd
即可打開:

使用cd
命令,進入到我們剛剛保存源代碼的目錄(即進入到桌面目錄cd Desktop
),使用dir
命令,查看目錄下內容:

使用javac
命令編譯源代碼:
javac HelloWorld.java

執行編譯命令后,你會發現同一目錄下會生成一個HelloWorld.class
文件,這個HelloWorld.class
就是我們說的字節碼文件。接下來就是通過 JVM
執行字節碼文件了,輸入下面的命令:
java HelloWorld
如果一切正常,你會看到屏幕上輸出如下內容:

祝賀你!成功執行了第一個 Java 程序!
Tips:
javac
是編譯器,而java
是虛擬機,先使用javac
編譯器編譯源代碼,再使用java
虛擬機執行字節碼文件。這就是我們上面提到的 java 源代碼被轉換兩次到執行的過程。java
命令后面的參數是類名。換句話說,我們只需要給虛擬機傳遞類名作為參數即可,虛擬機會自動查找對應的以.class
為擴展名的文件并且執行。
2. 理解程序
我們現在對上面的 HelloWorld.java
代碼進行解析:
public class HelloWorld {
...
}
這段代碼表示我們定義了一個公開類,類名為 HelloWorld
,按照約定類名首字母要大寫。
public
表示這個類是公開的(至于什么是公開的,我們后面再講),class
顧名思義,就是類, public
和 class
都是 Java 中的關鍵字,必須小寫。 花括號{}
中間為類的定義。
下面我們來看下花括號中間的 main()
方法代碼:
public static void main(String[] args) {
...
}
這段代碼表示我們定義了一個入口方法,注意:入口方法是 Java 程序執行的起點。
public
和 static
分別表示方法是公開的、靜態的,void
是方法的返回類型,main
后面的括號()
用來將方法的參數括起來,String[]
是參數的類型,args
是參數的名稱。
當然,剛剛對于代碼的解釋略顯生澀,作為初學者無需深究每一項的含義。但有一個點請務必牢記:Java 規定,某個類定義的public static void main(String[] args)
是Java程序的固定入口方法。
在方法內部,有一行代碼:
System.out.println("Hello World!");
這行代碼的意義就是將Hello World
這一串字符打印在屏幕上。你可以嘗試修改這塊內容,將代碼中的Hello World!
,替換為其他內容,例如:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("我愛慕課網!");
}
}
保存源代碼,打開命令行,重新編譯執行,屏幕上輸出的內容將會被成功替換。
3. 小結
本小節我們一起完成了第一個 Java 程序的執行,在這個過程中,我們了解了編譯相關的知識,知道了使用 javac
命令,可以將一個.java
擴展名的源代碼文件編譯成.class
擴展名的字節碼文件,使用 java
命令,可以執行字節碼文件。我們也對程序的基礎語法有了大致的了解。如果你對程序的理解還有困惑,也不必擔心,在后面的章節中,我們將具體學習 Java 的基礎語法,隨著知識的累積,你也將更加游刃有余地閱讀、編寫程序。