- 好好學(xué)Java:從零基礎(chǔ)到項目實戰(zhàn)
- 歐陽燊
- 2262字
- 2022-07-27 19:14:49
1.4.1 Java的代碼結(jié)構(gòu)
雖然使用IDEA按照向?qū)Э梢跃幾g和運行第一個Java程序,但是這個Java程序看起來很陌生,一個個名字、符號完全不知道是干什么的,對于初學(xué)者來說,好比天書一般,多看幾眼感覺都要走火入魔了。因此,接下來好好分析一下Java工程的總體結(jié)構(gòu),理清這些文字符號的來龍去脈。
話說宇宙原本鴻蒙初開,一片混沌,分不清天南地北,多虧了盤古開天辟地,輕且清的物質(zhì)上浮成為天空,重且濁的物質(zhì)下沉變作地殼,于是才有了一個萬物生長的星球。在Java世界中,這個星球便是工作空間。使用IDEA每次創(chuàng)建新項目,都會提示指定項目的保存路徑,之前創(chuàng)建的welcome項目與Hello項目,示例截圖都把它們放到了F:\IdeaProjects,該路徑便是當(dāng)前的工作空間。
工作空間指定了一塊硬盤區(qū)域,空間里的所有文件都位于該區(qū)域內(nèi)部,猶如山川河流縱橫于星球內(nèi)。在這日月爭輝的星球上,飛鳥走獸你追我跑,可是一片莽荒產(chǎn)生不了什么價值,還得進行開發(fā)才行。程序員作為這個星球的創(chuàng)造者,自然需要負責(zé)開疆拓土和建立秩序,接下來的事情就是創(chuàng)建國家機器了,對應(yīng)到Java世界則叫作創(chuàng)建Java工程,每個工程都能單獨運行,恰如每個國家都能單獨發(fā)展一樣。在IDEA的頂部菜單欄依次選擇File→New→Project,彈出如圖1-39所示的項目創(chuàng)建窗口。
在該窗口的右邊靠上區(qū)域可以選擇不同的Java版本,版本號越大表示版本越新、越高級,好比一個國家有不同的社會發(fā)展階段,如原始社會、奴隸社會、封建社會等,Java版本也在不斷地更新?lián)Q代,版本越高表示技術(shù)越進步。單擊窗口底部的Next按鈕,在下一個彈窗中再單擊Next按鈕,來到創(chuàng)建項目的第3個窗口,如圖1-40所示。在該界面的Project name輸入框中填寫項目名稱(可以理解為國家名稱)。注意輸入框下方的Project location目錄,這便是Java工程所處的工作空間,就像這個國家位于哪個星球之上。確認完項目名稱與工作空間,接著單擊窗口下方的Finish按鈕,完成項目創(chuàng)建操作。

圖1-39 創(chuàng)建新項目的類型窗口

圖1-40 創(chuàng)建新項目的信息窗口
一個國家畢竟太大了,還得劃分行政區(qū)劃,分而治之才管得過來,所以Java工程也要層層劃分,劃分后的組織機構(gòu)稱作“包”(Package)。說是“包”,其實更像“樹”,猶如樹干到樹枝再到樹葉這般開枝散葉。最頂層的組織是這個國家的國體,有叫帝國(com)的,有叫王國(net)的,有叫邦國(org)的,還有叫書院(edu)的,甚是熱鬧。常見的Java工程一般來自帝國時代,因此包名開頭通常是com。國家政權(quán)下面又有郡縣制,抑或省市制,總之要再分幾級,故而com下面還會有xxx.xxx.xxx之類。譬如,曹操是沛國譙縣人,那他在東漢帝國這個Java工程里的位置是com.donghan.peiguo.qiaoxian;劉備是涿郡涿縣人,那他的位置是com.donghan.zhuojun.zhuoxian;孫權(quán)是吳郡富春人,他的位置便是com.donghan.wujun. fuchun,以此類推。
有了包這種組織架構(gòu),現(xiàn)在可以往里面填充真材實料了,在一縣土地之上,既有官府建造的城池,也有農(nóng)民聚居的村落,每個聚集地都如同一個Java的代碼文件。作為一座城池,首先要具備3要素,即:它歸屬哪個地區(qū)?它的名稱是什么?它的范圍有多大?一個合格的Java代碼文件就要在文件內(nèi)容中清楚地寫明上述3個要素。以“關(guān)羽敗走麥城”的麥城為例,經(jīng)查史料得知,麥城在東漢時歸屬南郡當(dāng)陽縣,那么它應(yīng)當(dāng)位于包com.donghan.nanjun.dangyang之下。于是右擊Hello工程的src目錄,并選擇快捷菜單中的New→Package,在如圖1-41所示的彈窗中填寫包名。接著右擊該包,并在快捷菜單中依次選擇New→Java Class,彈出Class文件的創(chuàng)建窗口,如圖1-42所示。

圖1-41 創(chuàng)建新包的彈窗

圖1-42 創(chuàng)建新類的彈窗
在窗口中部的輸入框中填寫城池名稱Maicheng,然后雙擊下方的Class選項,完成代碼文件Maicheng的創(chuàng)建操作。自動生成的代碼文件內(nèi)容如下:
package com.donghan.nanjun.dangyang; // 東漢帝國南郡當(dāng)陽縣 public class Maicheng { }
由以上代碼可見,第一行指定了這個代碼文件所處的包路徑是com.donghan.nanjun.dangyang;第三行的Maicheng表示麥城這座城池的名稱,Maicheng前面的class表示城池類型;而Maicheng后面的左右花括號就是該城池的城墻了,凡是在花括號內(nèi)部的代碼,都屬于該城池的管轄范圍。
前面運行Hello World的時候,代碼里面有一個main方法,這個main方法好比城門,打開城門就能訪問城里的人物了。城里有官衙、市場和民居,這些建筑都有圍墻,也都能用花括號界定它們的區(qū)域范圍。正所謂小城故事多,城里發(fā)生的事情要一件一件記錄下來,可不能弄混淆了。對每件事情、每個動作,Java代碼也有相應(yīng)的標(biāo)點區(qū)分開來。古代每十里設(shè)置一長亭,每五里有一短亭,供行人休息,親友遠行常在此話別。這個分隔用的長亭對應(yīng)Java代碼里面的冒號,而短亭則對應(yīng)Java代碼的逗號。有了逗號和冒號,Java代碼講起故事來方能井井有條、頭頭是道。
下面舉一個具體的Java代碼例子。東漢建安九年(204年),曹操平定袁紹勢力后,開始在魏郡鄴縣營建鄴城,由此拉開了鄴城作為六朝古都的序幕。鄴城共有7個城門,其中正南門名叫鳳陽門,城內(nèi)建筑最有名的當(dāng)數(shù)銅雀臺,另有金虎臺、冰井臺與之齊名。現(xiàn)在給鄴城創(chuàng)建對應(yīng)的代碼文件Yecheng.java,并把它放在魏郡鄴縣這個包下,也就是com.donghan.weijun.yexian這個package之下。游客從鳳陽門這個main方法進入鄴城,一路先后參觀了銅雀臺、金虎臺和冰井臺,游覽路線是tongquetai→jinhutai→bingjingtai。這樣便勾勒出Yecheng(鄴城)這座城池的大概風(fēng)貌了,詳細的Java代碼如下:
package com.donghan.weijun.yexian; // 東漢帝國魏郡鄴縣 // 此乃魏國首都鄴城 public class Yecheng { public static void tongquetai() { System.out.println("這里是銅雀臺。"); } public static void jinhutai() { System.out.println("這里是金虎臺。"); } public static void bingjingtai() { System.out.println("這里是冰井臺。"); } public static void main(String[] args) { System.out.println("歡迎來到魏國的都城——鄴城。"); System.out.println("這里是鄴城的正南門——鳳陽門。"); tongquetai(); // 參觀朱雀臺 jinhutai(); // 參觀金虎臺 bingjingtai(); // 參觀冰井臺 } }
接著在該代碼文件內(nèi)部右擊,并在快捷菜單中選擇Run 'Yecheng.main()',表示運行這段Java代碼。運行結(jié)果可以在界面下方的Run窗口中觀察,如圖1-43所示。
由此可見,游客從鳳陽門進入鄴城,依次參觀了銅雀臺、金虎臺、冰井臺幾個景點。看起來代碼邏輯的主要意思都在了,細節(jié)上面可能有一些陌生的地方,不過不用擔(dān)心,后面將會逐步撥開迷霧。

圖1-43 Yecheng代碼的運行結(jié)果
- Spring Boot 2實戰(zhàn)之旅
- Android Wearable Programming
- SQL基礎(chǔ)教程(視頻教學(xué)版)
- ExtJS Web應(yīng)用程序開發(fā)指南第2版
- Java 從入門到項目實踐(超值版)
- JavaScript悟道
- Greenplum構(gòu)建實時數(shù)據(jù)倉庫實踐
- Python機器學(xué)習(xí)與量化投資
- UML基礎(chǔ)與Rose建模實用教程(第三版)
- Java核心編程
- C語言從入門到精通(第5版)
- Mobile Test Automation with Appium
- Python數(shù)據(jù)科學(xué)實戰(zhàn)
- 微信小程序開發(fā)實戰(zhàn)教程(PHP+Laravel+MySQL)(微課版)
- Java并發(fā)編程實戰(zhàn)