經(jīng)過前面幾章的講述囱晴,相信大家已經(jīng)對(duì)Java已有了基本的了解膏蚓。這一章,我就教大家如何去寫一個(gè)最最最簡(jiǎn)單的程序畸写。前面我們已經(jīng)提到降允,Java程序是在虛擬機(jī)當(dāng)中運(yùn)行的,所以艺糜,你的電腦應(yīng)該要安裝一個(gè)虛擬機(jī)(一個(gè)軟件),這個(gè)虛擬機(jī)我們將其稱為“Java運(yùn)行環(huán)境(Java Runtime Environment幢尚,簡(jiǎn)稱JRE)”破停。同時(shí),由于我們的“代碼”在運(yùn)行之前要先編譯成為“字節(jié)碼”尉剩,所以我們還需要一個(gè)工具來對(duì)代碼進(jìn)行編譯真慢,我已經(jīng)為大家準(zhǔn)備好這個(gè)工具包,名稱為JDK(Java SE Development Kit)理茎,這個(gè)工具包本身已經(jīng)捆綁了JRE黑界,所以你如果要進(jìn)行簡(jiǎn)單的開發(fā)管嬉,只要下載JDK然后安裝就可以了。當(dāng)然朗鸠,如果是真正的開發(fā)蚯撩,僅僅依靠JDK是不夠的,所以網(wǎng)絡(luò)上還提供了很多工具烛占,比較著名的有Eclipse胎挎、JBuilder、NetBeans等忆家,不過犹菇,對(duì)于初學(xué)者而言,我還是建議大家先打好基礎(chǔ)芽卿,不要在沒有站穩(wěn)腳跟之前就想著跑步揭芍。
大家可以直接進(jìn)入Oracle的網(wǎng)站下載最新版本的JDK:
http://www.oracle.com/technetwork/java/javase/downloads/
下載的時(shí)候要根據(jù)你的系統(tǒng)選擇32位或64位的,安裝過程比較簡(jiǎn)單卸例,不斷Next就可以了称杨,由于JDK本身是集成了JRE的,所以在安裝的時(shí)候你會(huì)看到有兩個(gè)位置要你確認(rèn)安裝目錄的币厕,按你的習(xí)慣選擇就可以了列另。例如,我選擇了C:\Program Files\Java這個(gè)路徑旦装,安裝完成后共看到兩個(gè)文件夾(具體名稱跟你選擇的版本有關(guān)):
細(xì)心的你可能會(huì)發(fā)現(xiàn)页衙,在jdk1.8.0_51下面也有一個(gè)jre目錄,并且里面的內(nèi)容居然跟jre1.8.0_51是一模一樣的阴绢,為什么要安裝兩次店乐,這不是多此一舉嗎?要知道老子的硬盤資源可是很寶貴的(你懂的)呻袭。其實(shí)眨八,這兩個(gè)jre是各自有分工的,如果你再細(xì)心一點(diǎn)左电,會(huì)看到j(luò)dk1.8.0_51目錄下的那個(gè)jre跟jre1.8.0_51并非完全一樣的廉侧,前者占用的硬盤空間會(huì)更大些,因?yàn)閖dk1.8.0_51目錄下的jre是供開發(fā)者使用的篓足,所以還包含了一些專門針對(duì)開發(fā)的jar文件段誊,而外部的jre1.8.0_51則是供其他程序使用的,例如IE瀏覽器栈拖。之所以這樣劃分连舍,是為了避免開發(fā)者的工作不至于影響其他程序的正常工作(例如服務(wù)器可能要調(diào)用外部那個(gè)JRE),兩個(gè)JRE是獨(dú)立運(yùn)行的涩哟。
下面索赏,我們就用最原始的方法來寫一個(gè)最簡(jiǎn)單的Java程序盼玄,我們使用的代碼編寫工具就是Windows自帶的記事本,夠原始了吧潜腻。
我們先在D盤新建一個(gè)JavaTest的目錄用來存放我們的代碼埃儿,在記事本中敲入以下代碼,然后保存為Clock.java
編寫完代碼之后砾赔,我們需要對(duì)代碼進(jìn)行編譯蝌箍,我們需要用到的編譯器就是位于jdk1.8.0_51\bin目錄下的javac.exe,這是一個(gè)Dos程序暴心,因此我們需要進(jìn)入Dos界面來運(yùn)行妓盲。我們直接在命令行輸入javac,可以看到如下的提示:
上面的第一行“用法”已經(jīng)告訴了我們?nèi)绾问褂眠@個(gè)命令专普,中間是可選的選項(xiàng)悯衬,最后是源文件路徑,我們?cè)贒os中輸入以下命令:
javac -d D:\JavaTest D:\JavaTest\Clock.java
javac后面的-d選項(xiàng)表示我們輸出的目錄是D:\JavaTest檀夹,要編譯的源文件是D:\JavaTest\Clock.java筋粗。執(zhí)行完之后,你可以在D:\JavaTest找到Clock.class炸渡,這就是編譯后的字節(jié)碼文件娜亿。
接下來,我們要運(yùn)行這個(gè)字節(jié)碼文件蚌堵。由于字節(jié)碼文件要在虛擬機(jī)里面運(yùn)行买决,我們?cè)趈dk1.8.0_51\bin目錄下看到有一個(gè)名稱為java.exe的文件,同樣吼畏,這個(gè)也是一個(gè)Dos命令督赤,通過執(zhí)行這個(gè)命令,我們可以啟動(dòng)虛擬機(jī)并執(zhí)行我們的程序泻蚊。同樣方法躲舌,我們看一下這個(gè)命令的用法:
參照第一行“用法”的提示已亥,我們輸入以下命令:
這個(gè)命令當(dāng)中当犯,-classpath選項(xiàng)指示java在哪里查找類横媚,然后跟著“類名稱”卤材。可以看到屏幕中輸出了“Hello Kitty”的字樣菜枷,這是我們的程序當(dāng)中System.out.println("Hello Kitty");運(yùn)行的結(jié)果躬厌。我們回過頭來看一下我們的代碼:
public class Clock {
public static void main(String[] args){
System.out.println("Hello Kitty");
}
}
根據(jù)上一章我們介紹的內(nèi)容牙甫,我們看到在Clock類當(dāng)中定義了一個(gè)public的方法滩褥,方法名稱為main,后面跟著一個(gè)參數(shù)(String[] args)炫加,這個(gè)方法的返回值是void瑰煎,也就是沒有返回值铺然。另外,還有一個(gè)static酒甸,這個(gè)static是靜態(tài)的意思魄健,我們稱這個(gè)為靜態(tài)方法,我們后面還會(huì)詳細(xì)講述這個(gè)東西插勤。在這里沽瘦,我們需要記住的是,這個(gè)main是比較特殊的一個(gè)方法农尖,我們稱之為“入口函數(shù)”析恋,也就是說,java在執(zhí)行類的時(shí)候盛卡,首先會(huì)去找這個(gè)函數(shù)助隧,然后再根據(jù)這個(gè)函數(shù)逐步調(diào)用其他方法,最終完成程序的執(zhí)行滑沧。每一個(gè)程序都至少有一個(gè)main方法(如果有多個(gè)main方法則需要在執(zhí)行的時(shí)候指定那個(gè)是主方法)并村,否則程序?qū)o(wú)法啟動(dòng)。
上面我們使用了最原始的方法來編譯及運(yùn)行程序滓技,效率確實(shí)非常低哩牍,下面,我們稍微改進(jìn)一下令漂,以便后面在練習(xí)的時(shí)候可以更加方便膝昆。
首先,我們?nèi)ハ螺d一個(gè)更友好的小型編輯器EditPlus洗显,這個(gè)編輯器比較小外潜,不過有語(yǔ)法高亮、括號(hào)匹配等功能挠唆,關(guān)鍵是我們可以直接調(diào)用javac处窥、java等命令,不用再每一次都通過敲命令行的方式來編譯和運(yùn)行玄组。
我們使用EditPlus來打開剛才的代碼:
可以看到Java保留字以及常用的類都進(jìn)行了高亮顯示滔驾,并且我們點(diǎn)擊大括號(hào)會(huì)自動(dòng)高亮顯示與之匹配的大括號(hào)。下面俄讹,我們需要將javac哆致、java這兩個(gè)命令設(shè)置到這個(gè)工具中。
點(diǎn)擊“工具”-“配置自定義工具”患膛,點(diǎn)擊“組名”將默認(rèn)的“工具組1”命名為“Java工具”摊阀,然后點(diǎn)擊“添加工具”,選擇“程序”。我們可以對(duì)照之前我們執(zhí)行javac的語(yǔ)法:
javac -d D:\JavaTest D:\JavaTest\Clock.java
然后在各欄填寫信息如下:
命令:C:\Program Files\Java\jdk1.8.0_51\bin\javac.exe
參數(shù):-d D:\JavaTest $(FilePath) 后面的$(FilePath)是文件路徑
起始目錄:C:\Program Files\Java\jdk1.8.0_51\bin
點(diǎn)擊“應(yīng)用”胞此,我們就完成了javac命令的集成臣咖。接著,我們添加“java”命令漱牵,同理夺蛇,對(duì)照之前的命令:
java -classpath D:\JavaTest Clock
各項(xiàng)設(shè)置如下:
我們用EditPlus打開Clock.java,點(diǎn)擊“工具”下的“javac”酣胀,然后我們就可以看到D:\JavaTest多了一個(gè)Clock.class刁赦。點(diǎn)擊“工具”下的“java”,就可以看到以下輸出:
下面我們稍微改動(dòng)一下代碼闻镶,在代碼的最上方增加一行:
package test.code1;
我們?cè)賵?zhí)行javac甚脉,可以看到,原來的目錄下多了一個(gè)test目錄
將其打開儒溉,可以看到code1目錄宦焦,在code1目錄下可以扎到Clock.class字節(jié)碼文件。現(xiàn)在顿涣,我們先刪掉D:\JavaTest目錄下的Clock.class文件波闹,然后運(yùn)行“工具”下面的“java”,問題來了涛碑,提示“錯(cuò)誤: 找不到或無(wú)法加載主類 Clock”精堕。原因是我們的java命令此時(shí)其實(shí)是變成這樣子:
java -classpath D:\JavaTest Clock
由于我們的Clock路徑已經(jīng)改變,所以會(huì)出現(xiàn)找不到類的情況蒲障,那應(yīng)該怎么寫呢歹篓?我可以告訴大家,正確的寫法應(yīng)該是:
java -classpath D:\JavaTest test.code1.Clock
可以看到揉阎,這里我們?cè)陬惷Q之前加了包的路徑庄撮,這樣子java就知道我們的這個(gè)類其實(shí)是位于D:\JavaTest\test\code1目錄下。其中“test.code1.Clock”我們可以將其稱為一個(gè)“完整的類名”毙籽。那EditPlus當(dāng)中有沒有辦法能夠?qū)崿F(xiàn)這個(gè)命令呢洞斯?方法是有的,我們只需稍微改動(dòng)以下:
我們將“參數(shù)”部分修改以下坑赡,其中最后面我們不是跟類名烙如,而是需要我們?cè)谶\(yùn)行的時(shí)候輸入“類的完整路徑”,運(yùn)行的時(shí)候會(huì)彈出以下提示框:
我們輸入類名點(diǎn)擊“確定”就可以運(yùn)行毅否。
需要提示一下的是亚铁,很多書籍或者網(wǎng)絡(luò)的文章都會(huì)教大家通過修改環(huán)境變量的方式來簡(jiǎn)化javac以及java命令的使用,從而可以在任意目錄下執(zhí)行這兩個(gè)命令螟加,不過我個(gè)人是不太建議這種做法的徘溢,畢竟那是操作系統(tǒng)本身的事情吞琐,Java作為一個(gè)獨(dú)立的第三方程序沒有必要去干涉人家的內(nèi)政,守好自己的一畝三分地就可以了然爆。更重要的是顽分,當(dāng)我們?cè)谶M(jìn)行真正的開發(fā)時(shí),一般的開發(fā)工具都已經(jīng)集成了JRE施蜜,我們幾乎可以進(jìn)行傻瓜式的開發(fā)。
[原創(chuàng)作品雌隅,未經(jīng)授權(quán)請(qǐng)勿轉(zhuǎn)載]