第一個(gè) Java 程序
本節(jié)我們將以Windows操作系統(tǒng)為例,編寫并執(zhí)行第一個(gè)Java程序。在這之前,請確保你的操作系統(tǒng)上已經(jīng)安裝了JDK
1. 編譯程序
大家可能有個(gè)疑問,為什么需要編譯程序呢?計(jì)算機(jī)不能直接執(zhí)行我們編寫的源代碼嗎?
這是由于計(jì)算機(jī)只能識別由0和1組成的二進(jìn)制代碼。需要通過編譯將源代碼轉(zhuǎn)換為計(jì)算機(jī)認(rèn)識的二進(jìn)制代碼。
1.1 Java 中的編譯
在 Java 中,程序不是直接被編譯為可執(zhí)行文件,而是被編譯為字節(jié)碼文件, JVM(Java虛擬機(jī))在運(yùn)行時(shí)執(zhí)行字節(jié)碼文件。當(dāng)我們使用 javac 編譯器時(shí),Java 源代碼文件被編譯為字節(jié)碼文件,字節(jié)碼文件以擴(kuò)展名 .class 的形式保存在磁盤上。當(dāng)程序運(yùn)行時(shí),字節(jié)碼文件將被轉(zhuǎn)換為機(jī)器代碼,并在內(nèi)存中執(zhí)行。
總的來說,Java 源代碼需要被“轉(zhuǎn)換”兩次才能被計(jì)算機(jī)執(zhí)行:
- Java 源代碼被編譯為字節(jié)碼:由 javac 前端編譯器完成;
- 字節(jié)碼被編譯為機(jī)器碼:由 JVM 的執(zhí)行引擎完成。
下圖描述了一個(gè)Java程序從編寫到編譯,再到執(zhí)行的步驟:
1.2 快速執(zhí)行一個(gè)程序
1.2.1 準(zhǔn)備工作
為了確保我們?nèi)松械谝粋€(gè) Java 程序能夠順利執(zhí)行,請首先確認(rèn)你已經(jīng)完成了下面兩件事情:
- 已經(jīng)在你的電腦上成功安裝
JDK; - 有一個(gè)文本編輯器。(如 Windows 的記事本,Unix 的 vim)。
1.2.2 編寫源代碼
新建一個(gè)文本,輸入如下內(nèi)容,將其命名為 HelloWorld.java并保存
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Tips:
- 文件名必須與類名同名(類名就是上面第一行代碼中
class后面的HelloWorld),并且擴(kuò)展名為.java,文件名和類名都區(qū)分大小寫,所以請確保文件名和類名大小寫保持一致;- 類的命名約定以大寫字母開頭;
- 上述代碼中的所有符號,請使用英文半角;
- 別忽略了代碼第三行結(jié)尾的分號
;。
下面為實(shí)操中的截圖。
打開記事本,輸入源代碼:
點(diǎn)擊文件 -> 保存,將文件保存到磁盤(此處保存在桌面上),注意:這里要將文件名命名為HelloWorld.java,保存類型選擇所有文件,編碼選擇UTF-8:
1.2.3 編譯后執(zhí)行
現(xiàn)在,打開你常用的命令行工具。(如 Windows 上的命令提示符、MacOS 上的終端),并進(jìn)入你剛剛保存 Java 源代碼的目錄。
在Windows搜索欄中輸入cmd即可打開:
使用cd命令,進(jìn)入到我們剛剛保存源代碼的目錄(即進(jìn)入到桌面目錄cd Desktop),使用dir命令,查看目錄下內(nèi)容:
使用javac命令編譯源代碼:
javac HelloWorld.java
執(zhí)行編譯命令后,你會(huì)發(fā)現(xiàn)同一目錄下會(huì)生成一個(gè)HelloWorld.class文件,這個(gè)HelloWorld.class就是我們說的字節(jié)碼文件。接下來就是通過 JVM 執(zhí)行字節(jié)碼文件了,輸入下面的命令:
java HelloWorld
如果一切正常,你會(huì)看到屏幕上輸出如下內(nèi)容:
祝賀你!成功執(zhí)行了第一個(gè) Java 程序!
Tips:
javac是編譯器,而java是虛擬機(jī),先使用javac編譯器編譯源代碼,再使用java虛擬機(jī)執(zhí)行字節(jié)碼文件。這就是我們上面提到的 java 源代碼被轉(zhuǎn)換兩次到執(zhí)行的過程。java命令后面的參數(shù)是類名。換句話說,我們只需要給虛擬機(jī)傳遞類名作為參數(shù)即可,虛擬機(jī)會(huì)自動(dòng)查找對應(yīng)的以.class為擴(kuò)展名的文件并且執(zhí)行。
2. 理解程序
我們現(xiàn)在對上面的 HelloWorld.java 代碼進(jìn)行解析:
public class HelloWorld {
...
}
這段代碼表示我們定義了一個(gè)公開類,類名為 HelloWorld,按照約定類名首字母要大寫。
public 表示這個(gè)類是公開的(至于什么是公開的,我們后面再講),class顧名思義,就是類, public 和 class都是 Java 中的關(guān)鍵字,必須小寫。 花括號{} 中間為類的定義。
下面我們來看下花括號中間的 main()方法代碼:
public static void main(String[] args) {
...
}
這段代碼表示我們定義了一個(gè)入口方法,注意:入口方法是 Java 程序執(zhí)行的起點(diǎn)。
public 和 static分別表示方法是公開的、靜態(tài)的,void是方法的返回類型,main后面的括號() 用來將方法的參數(shù)括起來,String[]是參數(shù)的類型,args是參數(shù)的名稱。
當(dāng)然,剛剛對于代碼的解釋略顯生澀,作為初學(xué)者無需深究每一項(xiàng)的含義。但有一個(gè)點(diǎn)請務(wù)必牢記:Java 規(guī)定,某個(gè)類定義的public static void main(String[] args)是Java程序的固定入口方法。
在方法內(nèi)部,有一行代碼:
System.out.println("Hello World!");
這行代碼的意義就是將Hello World這一串字符打印在屏幕上。你可以嘗試修改這塊內(nèi)容,將代碼中的Hello World!,替換為其他內(nèi)容,例如:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("我愛慕課網(wǎng)!");
}
}
保存源代碼,打開命令行,重新編譯執(zhí)行,屏幕上輸出的內(nèi)容將會(huì)被成功替換。
3. 小結(jié)
本小節(jié)我們一起完成了第一個(gè) Java 程序的執(zhí)行,在這個(gè)過程中,我們了解了編譯相關(guān)的知識,知道了使用 javac命令,可以將一個(gè).java擴(kuò)展名的源代碼文件編譯成.class擴(kuò)展名的字節(jié)碼文件,使用 java 命令,可以執(zhí)行字節(jié)碼文件。我們也對程序的基礎(chǔ)語法有了大致的了解。如果你對程序的理解還有困惑,也不必?fù)?dān)心,在后面的章節(jié)中,我們將具體學(xué)習(xí) Java 的基礎(chǔ)語法,隨著知識的累積,你也將更加游刃有余地閱讀、編寫程序。
ColorfulC ·
2025 imooc.com All Rights Reserved |