《Java從小白到大牛》之第3章 第一個Java程序

《Java從小白到大牛》紙質(zhì)版已經(jīng)上架了B!锉试!

本書第一個Java程序是通過控制臺輸出HelloWorld纬纪,以這個示例為切入點(diǎn),向大家系統(tǒng)介紹Java程序的編寫只损、Java源代碼結(jié)構(gòu)以及一些基礎(chǔ)知識一姿。

在Java中,程序都是以類的方式組織的跃惫,Java源文件都保存為.java文件當(dāng)中叮叹。每個可運(yùn)行的程序都是一個類文件,或者稱之為字節(jié)碼文件爆存,保存為.class文件衬横。要實(shí)現(xiàn)在控制臺中輸出HelloWorld示例,則需要編寫一個Java類终蒂。

3.1 使用Eclipse實(shí)現(xiàn)

HelloWorld示例可通過多種工具實(shí)現(xiàn)蜂林,這一節(jié)首先介紹如何通過Eclipse實(shí)現(xiàn)。

3.1.1 創(chuàng)建項(xiàng)目

在Eclipse中通過項(xiàng)目(Project)管理Java類拇泣,因此需要先創(chuàng)建一個Java項(xiàng)目噪叙,然后在項(xiàng)目中創(chuàng)建一個Java類。

Eclipse創(chuàng)建項(xiàng)目步驟是:打開Eclipse霉翔,選擇菜單“文件”→“新建”→“Java項(xiàng)目”睁蕾,打開新建Java項(xiàng)目對話框,如圖3-1所示债朵。

下面簡要說明圖3-1所示各個選項(xiàng):

  • 項(xiàng)目名:是要創(chuàng)建的項(xiàng)目名稱子眶。
  • 使用缺省位置:選中該選項(xiàng),創(chuàng)建的項(xiàng)目會保存到工作空間中序芦。
  • JRE:開發(fā)人員可以在這里指定項(xiàng)目運(yùn)行所需要的JRE臭杰,默認(rèn)是使用系統(tǒng)Path環(huán)境變量所指定的JRE。
  • 項(xiàng)目布局:是設(shè)置項(xiàng)目中源文件和類文件的存放目錄谚中,默認(rèn)情況下選中“為源文件和類文件創(chuàng)建單獨(dú)的文件夾”渴杆,這個選項(xiàng)選中后,源文件和類文件會在兩個不同的文件夾下宪塔,即源文件被放置在當(dāng)前項(xiàng)目的文件夾中磁奖,類文件被放置在當(dāng)前項(xiàng)目的bin文件夾中;如果選中“使用項(xiàng)目文件夾作為源文件和類文件的根目錄”某筐,則源文件和類文件都被放置在當(dāng)前項(xiàng)目根目錄下比搭,而且混合在一起。
  • 工作集:可以將多個相關(guān)的項(xiàng)目集中在一個工作集中管理南誊。

圖3-1所示對話框中看起來有很多項(xiàng)目需要設(shè)置身诺,其實(shí)除了項(xiàng)目名稱必須輸入外蔽莱,其他的完全可以采用默認(rèn)值。選項(xiàng)設(shè)置完成后戚长,單擊“下一步”按鈕盗冷,進(jìn)入如圖3-2所示的Java設(shè)置對話框,在這里可以對源文件和類文件的保放文件夾進(jìn)行進(jìn)一步設(shè)置同廉。確認(rèn)無誤后仪糖,單擊“完成”按鈕創(chuàng)建項(xiàng)目。項(xiàng)目創(chuàng)建完成后迫肖,回到如圖3-3所示的Eclipse主界面锅劝。

圖3-1 新建Java項(xiàng)目對話框

圖3-2 Java設(shè)置對話框

圖3-3 項(xiàng)目創(chuàng)建完成

3.1.2 創(chuàng)建類

項(xiàng)目創(chuàng)建完成后,需要創(chuàng)建一個類執(zhí)行控制臺輸出操作蟆湖。選擇剛剛創(chuàng)建的項(xiàng)目故爵,然后選擇菜單“文件”→“新建”→“類”,打開新建類對話框隅津,在對話框中輸入如圖3-4所示內(nèi)容诬垂。

下面簡要說明圖3-4所示各個選項(xiàng):

  • 源文件夾:由于創(chuàng)建項(xiàng)目時候指定了源文件夾,這里使用默認(rèn)值即可伦仍。
  • 包:是類所在的包结窘,包名一般是公司域名的倒置,可以沒有充蓝。
  • 名稱:是類的名稱隧枫。
  • 修飾符:是類前面的修飾符,這些修飾符含義谓苟,目前先不解釋官脓,選擇公有就可以了。
  • 超類:即父類涝焙,這里可以指定該類的父類卑笨。
  • 接口:指定該類實(shí)現(xiàn)哪些接口。
  • 創(chuàng)建方法存根:就是在代碼創(chuàng)建這些方法纱皆,本例中需要選中第一個方法(main方法)湾趾,這個main方法是程序的入口芭商。
  • 添加注釋:這里可以設(shè)置代碼是否生成注釋派草,也可以修改注釋模版。

圖3-4 創(chuàng)建類對話框

在圖3-4所示對話框中輸入完成铛楣,單擊“完成”按鈕就創(chuàng)建了一個Java類近迁,如圖3-5所示,在包資源管理器中可以看到剛才創(chuàng)建的源文件簸州。

圖3-5 創(chuàng)建類完成

3.1.3 運(yùn)行程序

修改剛剛生成的HelloWorld.java源文件鉴竭,在main方法中添加輸出語句歧譬,修該完成后代碼如下:

package com.a51work6;

public class HelloWorld {
    public static void main(String[] args) {    ①
        System.out.print("Hello World."); ②
    }
}

代碼第①行中的public static void main(String[] args)方法是一個應(yīng)用程序的入口,也表明了HelloWorld是一個Java應(yīng)用程序(Java Application)搏存,可以獨(dú)立運(yùn)行瑰步。代碼第②行的System.out.print("Hello World.")語句是輸出Hello World.字符串到控制臺。

提示 在Java SE平臺有兩種可以獨(dú)立運(yùn)行的程序:Java Application(Java應(yīng)用程序)和Java Applet(Java小應(yīng)用程序)兩種璧眠。Java應(yīng)用程序具有public static void main(String[] args)缩焦,上述HelloWorld就是這種類型。Java小應(yīng)用程序是主要是嵌入到網(wǎng)頁中運(yùn)行的责静,Java小應(yīng)用程序是一種淘汰的技術(shù)袁滥,不再介紹Java小應(yīng)用程序。

程序編寫完成可以運(yùn)行了灾螃。如果是第一次運(yùn)行题翻,則需要選擇運(yùn)行方法,具體步驟是:選中文件腰鬼,選擇菜單“運(yùn)行”→“運(yùn)行方法”→“Java應(yīng)用程序”嵌赠,這樣就會運(yùn)行HelloWorld程序了。如果已經(jīng)運(yùn)行過程一次熄赡,就不需要這么麻煩了猾普,直接單擊工具欄中的“運(yùn)行”按鈕,或選擇菜單“運(yùn)行”→“運(yùn)行”本谜,或使用快捷鍵Ctrl+F11初家,都可以就運(yùn)行上次的程序了。運(yùn)行結(jié)果如圖3-6所示乌助,Hello World.字符串到下面的控制臺溜在。

圖3-6 運(yùn)行結(jié)果

3.2 文本編輯工具+JDK實(shí)現(xiàn)

如果不想使用IDE工具(筆者建議出學(xué)者通過這種方式學(xué)習(xí)Java),那么文本編輯工具+JDK對于初學(xué)者而言是一個不錯的選擇他托,這種方式可以使初學(xué)者了解到Java程序的編譯和運(yùn)行過程掖肋,通過自己在編輯器中敲入所有代碼,可以幫助熟悉常用類和方法赏参。

注意 在2.3.3節(jié)介紹過EditPlus與JDK集成過程志笼,2.3.3節(jié)集成方式有一個弊端是:不能執(zhí)行帶有包的Java應(yīng)用程序。

3.2.1 編寫源代碼文件

首先使用任何文本編輯工具創(chuàng)建一個文件把篓,然后將文件保存為HelloWorld.java纫溃。接著在HelloWorld.java文件中編寫如下代碼:

package com.a51work6;

public class HelloWorld {

    public static void main(String[] args) {    
        System.out.print("Hello World."); 
    }

}

在Java中一個源程序文件中可以定義多個類,如下代碼定義了三個類HelloWorld韧掩、A和B紊浩。

//HelloWorld.java源文件
package com.a51work6;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

class A {
    
}

class B {
    
}

注意 一個源程序文件包含多個類時,需要注意如下問題:
1. 只能有一個類聲明為公有(public)的。
2. 文件命名必須與公有類名完全一致坊谁,包括字母大小寫费彼。
3. public static void main(String[] args)只能定義在公有類中。

3.2.2 編譯程序

編譯程序需要在命令行中使用JDK的javac指令編寫口芍,參考2.1.2節(jié)打開命令行箍铲,如圖3-7所示,通過cd命令進(jìn)入到源文件所在的目錄鬓椭,然后執(zhí)行javac指令虹钮。如果沒有錯誤提示,說明編譯成功膘融,編譯成功則在當(dāng)前目錄下面生成類文件芙粱,如圖3-8所示生成了三個類文件,這是因?yàn)镠elloWorld.java源文件中定義了三個類氧映。

圖3-7 編譯源文件

圖3-8 編譯成功

上述編譯過程雖然成功了春畔,但是運(yùn)行時會有以下問題,這是由于HelloWorld.java源文件中定義了包c(diǎn)om.a51work6岛都,編譯應(yīng)該使用-d參數(shù)律姨,編譯指令如圖3-9所示。

圖3-9 編譯有包的源文件

編譯指令javac中的-d參數(shù)是指定類文件生成位置臼疫,-d后面跟的是一個目錄的路徑择份,本例中使用“.”點(diǎn)表示當(dāng)前目錄,編譯成功之后的目錄結(jié)果如下:

當(dāng)前目錄
│ HelloWorld.java
└─com
    └─a51work6
            A.class
            B.class
            HelloWorld.class

其中的com是目錄烫堤,它在當(dāng)前目錄的子目錄荣赶,a51work6也是目錄,它是com的子目錄鸽斟,可以包c(diǎn)om.a51work6會生成com\a51work6的目錄結(jié)構(gòu)拔创。

3.2.3 運(yùn)行程序

編譯成功之后就可以運(yùn)行了。執(zhí)行類文件需要在命令行中使用JDK的java指令富蓄,參考2.1.2節(jié)打開命令行剩燥,如圖3-10所示,通過cd命令進(jìn)入到源文件所在的目錄立倍,然后執(zhí)行java -classpath .;c:\com.a51work6.HelloWorld指令灭红,執(zhí)行成功在命令行窗口輸出Hello World!字符串。

圖3-10 運(yùn)行類文件

注意 java和javac指令都可以帶有-classpath(縮寫-cp)口注,它用來指定類路徑变擒,即搜索類的路徑,類似于操作系統(tǒng)中的path疆导,路徑之間用分號分隔赁项,其中點(diǎn)(.)表示當(dāng)前路徑葛躏。就本例而言運(yùn)行java程序HelloWorld所需要的全部類都在當(dāng)前路徑下澈段,因此只需要設(shè)置-classpath .就可以了悠菜,或者省略(當(dāng)前路徑不用指定)。

3.3 代碼解釋

經(jīng)過前文的介紹败富,讀者應(yīng)該能夠照貓畫虎悔醋,自己動手做一個Java應(yīng)用程序了。但還是對其中的一些代碼不甚了解兽叮,下面來詳細(xì)解釋一下HelloWorld示例中的代碼芬骄。

//包定義
package com.a51work6; ①

//類定義
public class HelloWorld { ②

    //定義靜態(tài)main方法
    public static void main(String[] args) { ③
        System.out.print("Hello World.");  ④    
    }

}

代碼第①行是定義類所在的包,package是關(guān)鍵字鹦聪,com.a51work6是包名账阻,包是一個命名空間,可以防止命名沖突問題泽本,關(guān)于包的概念將在后面章節(jié)詳細(xì)介紹淘太。

代碼第②行是定義類,public修飾符是聲明類是公有的规丽,class是定義類關(guān)鍵字蒲牧,HelloWorld是自定義的類名了,后面跟有“{…}”是類體赌莺,類體中會有成員變量和方法冰抢,也會有一些靜態(tài)變量和方法。

代碼第③行是定義靜態(tài)main方法艘狭,而作為一個Java應(yīng)用程序挎扰,類中必須包含靜態(tài)main方法,程序執(zhí)行是從main方法開始的巢音。main方法中除參數(shù)名args可以自定義外鼓鲁,其他必須嚴(yán)格遵守如下來兩種格式:

public static void main(String args[])
public static void main(String[] args)

這兩種格式本質(zhì)上就是一種,String args[]和String[] args都是聲明String數(shù)組港谊。另外骇吭,args參數(shù)是程序運(yùn)行時,通過控制臺向應(yīng)用程序傳遞字符串參數(shù)歧寺。

代碼第④行System.out.print("Hello World.");語句是通過Java輸出流(PrintStream)對象System.out打印Hello World.字符串燥狰,System.out是標(biāo)準(zhǔn)輸出流對象,它默認(rèn)輸出到控制臺斜筐。輸出流(PrintStream)中常用打印方法:

  • print(String s) :打印字符串不換行龙致,有多個重載方法,可以打印任何類型數(shù)據(jù)顷链。
  • println(String x) :打印字符串換行目代,有多個重載方法,可以打印任何類型數(shù)據(jù)。
  • printf(String format, Object... args) :使用指定輸出格式榛了,打印任何長度的數(shù)據(jù)在讶,但不換行。

修改HelloWorld.java示例代碼如下:

public class HelloWorld {
    public static void main(String[] args) {
        
        //通過print打印第一個控制臺參數(shù)
        System.out.print(args[0]);  ①
        //通過println打印第二個控制臺參數(shù)
        System.out.println(args[1]);  ②
        //通過printf打印第三個控制臺參數(shù)霜大,%s表示格式化字符串
        System.out.printf("%s", args[2]);  ③
        System.out.println();

        int i = 123;
        //%d表示格式化整數(shù)
        System.out.printf("%d\n", i);  ④

        double d = 123.456;
        //%f表示格式化浮點(diǎn)數(shù)
        System.out.printf("%f%n", d);  ⑤
        System.out.printf("%5.2f", d);  ⑥

    }
}

編譯HelloWorld.java源代碼后构哺,通過如圖3-11所示,其中的java命令行后面的HelloWorld是要運(yùn)行的類文件战坤,Tony Hello World.是參數(shù)曙强,多個參數(shù)用空格分割。

圖3-11 在命令行中運(yùn)行程序

上述代碼第①行使用print方法打印第一個參數(shù)args[0]途茫,注意該方法是打印完成后面不換行碟嘴,從輸出結(jié)果中可見第一個參數(shù)Tony和第二個參數(shù)Hello連在一起了。代碼第②行使用println方法打印第二個參數(shù)args[1]囊卜,從輸出結(jié)果中可見第二個參數(shù)Hello后面是有換行的娜扇。

代碼第③、④边败、⑤袱衷、⑥行都是使用printf方法打印,注意printf方法后面是沒有換行的笑窜,想在后面換行可以通過System.out.println()語句實(shí)現(xiàn)致燥,或在打印第字符串后面添加換行符號(\n或%n),見代碼第④行和第⑤行排截。代碼第%5.2f也表示格式化浮點(diǎn)數(shù)嫌蚤,5表示總輸出的長度,2表示保留的小數(shù)位断傲。

本章小結(jié)

本章通過一個HelloWorld示例入手脱吱,介紹使用Eclipse和使用文本工具+JDK實(shí)現(xiàn)該示例具體過程。掌握Eclipse使用非常重要认罩,但是使用文本工具+JDK對于初學(xué)者也很有幫助箱蝠。最后詳細(xì)解釋了HelloWorld示例。

配套視頻

http://www.zhijieketang.com/classroom/6/courses

配套源代碼

http://www.zhijieketang.com/group/5

與本書免費(fèi)版對應(yīng)的還有一個收費(fèi)版本:

  1. 進(jìn)入百度閱讀電子書

  2. 進(jìn)入圖靈社區(qū)電子書

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垦垂,一起剝皮案震驚了整個濱河市宦搬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劫拗,老刑警劉巖间校,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異页慷,居然都是意外死亡憔足,警方通過查閱死者的電腦和手機(jī)胁附,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滓彰,“玉大人控妻,你說我怎么就攤上這事≌颐郏” “怎么了饼暑?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵稳析,是天一觀的道長洗做。 經(jīng)常有香客問我,道長彰居,這世上最難降的妖魔是什么诚纸? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮陈惰,結(jié)果婚禮上畦徘,老公的妹妹穿的比我還像新娘。我一直安慰自己抬闯,他們只是感情好井辆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溶握,像睡著了一般杯缺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睡榆,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天萍肆,我揣著相機(jī)與錄音,去河邊找鬼胀屿。 笑死塘揣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宿崭。 我是一名探鬼主播亲铡,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葡兑!你這毒婦竟也來了奖蔓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤铁孵,失蹤者是張志新(化名)和其女友劉穎锭硼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕劝,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡檀头,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年轰异,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暑始。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搭独,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出廊镜,到底是詐尸還是另有隱情牙肝,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布嗤朴,位于F島的核電站配椭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏雹姊。R本人自食惡果不足惜股缸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吱雏。 院中可真熱鬧敦姻,春花似錦、人聲如沸歧杏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犬绒。三九已至旺入,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間懂更,已是汗流浹背眨业。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沮协,地道東北人龄捡。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像慷暂,于是被迫代替她去往敵國和親聘殖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,077評論 25 707
  • 《Java從小白到大牛》紙質(zhì)版已經(jīng)上架了Q谩M徽铡! Java誕生到現(xiàn)在已經(jīng)有20多年了氧吐,但是Java仍然是非常熱門的編...
    tony關(guān)東升閱讀 1,304評論 3 17
  • 有時候我們會討厭那個不好好努力碌碌無為的自己讹蘑,覺得自己不夠好末盔,羨慕別人可以閃閃發(fā)光,可以一鳴驚人座慰,可以成為相對成功...
    阿逗小姐閱讀 617評論 0 7
  • 致橡樹 我如果愛你—— 絕不像攀援的凌霄花版仔, 借你的高枝炫耀自己游盲; 我如果愛你—— 絕不學(xué)癡情的鳥兒, 為綠蔭重復(fù)...
    Echo歡閱讀 545評論 0 4
  • 說了是無情 寫了更無情 都作無情人何必再寫信 既然已無心 何苦再用心 一封信就輕易把過去寫成幻影 我站在屋頂 淚和...
    9234f791edb2閱讀 226評論 0 0