1. 程式人生 > >Java開發筆記(三)Java帝國的特種官吏

Java開發筆記(三)Java帝國的特種官吏

上一篇文章介紹了Java工程的帝國區劃,末尾給出了一段Java程式碼例子,這個程式碼雖然勉強能看懂,但是有些細節令人不甚了了。比如說“// 參觀朱雀臺”為何能夠直接跟在當前行後面?“System.out.println”又為何被點號繞了三道灣?顯然這裡面必定有一些規則需要遵守,好比到了一個國家就要入鄉隨俗,為了方便遊客更好更快地適應當地的風俗,Java帝國特別設立了幾個特殊官職,專門負責對內對外打交道的事情。其中有幾個官吏經常露面,尤其需要初學者注意,他們是:翻譯官、太史公、貿易官,接下來分別介紹如何與它們打招呼。

翻譯官

Java程式碼其實由一行一行的符號組成,跟通俗易懂的自然語言沒法比,因為Java只是一種計算機程式設計的高階語言,它的程式碼邏輯是給電腦看的,不是給普通人看的,所以初學者不要指望馬上就能看懂Java程式碼。到了異國他鄉,面對周圍的鳥語嘰喳,啥都聽不懂可不是辦法,最好能找個翻譯,把這群老外說的鳥語翻譯成你我熟知的母語,這樣才好待下來學習和生活。Java帝國裡面也有類似的翻譯官,大名叫做“註釋”,意思就是在程式碼裡新增一行或者一段說明性的文字,這些說明文字對程式執行不起任何作用,僅僅是方便初學者理解Java程式碼的功能作用。 像前面程式碼裡面的“// 參觀朱雀臺”,開頭的兩個雙斜杆“//”便是註釋的標記符號,它表示當前行在雙斜杆之後的內容都屬於註釋文字,可以隨便寫開發者的母語文字,反正不會影響Java程式的編譯和執行。雙斜杆的註釋規則有兩條,其一為:它只註釋後面的文字,不註釋前面的文字;其二為:它只對當前行有效,對上一行和下一行都是無效的。因此,如果要新增多行的說明文字,就得在每行文字開頭都加上雙斜杆符號。下面是給Java程式碼新增多行註釋的例子:

// 先參觀朱雀臺
// 再參觀金虎臺
// 最後參觀冰井臺

然而每行文字前面都要開發者手工輸入雙斜杆,實在是有點興師動眾,為減少開發者的工作量,有兩個辦法可以避免重複的手工輸入。第一個辦法,先用滑鼠選中需要註釋的數行文字,再依次選擇Eclipse頂部選單的“Source”→“Toogle Comment”,此時Eclipse瞬間在這幾行文字開頭都加上了雙斜杆。第二個辦法,是採用Java程式碼的多行註釋標記,這個多行註釋,需要一個標記頭和一個標記尾,那麼夾在頭尾標記中間的文字,即為被註釋了的文字內容了。所謂的標記頭,由符號“/”組成,而標記尾則由符號“/”組成,二者之間可以有單行文字,也可以有多行文字。如果頭尾標記包括註釋文字都在同一行,那麼該行的完整註釋形如“/* 這裡是註釋文字 */”。如果頭尾標記連同註釋文字分散成多行排列,那麼完整的多行註釋格式是下面這種形式:

/* 先參觀朱雀臺
 再參觀金虎臺
 最後參觀冰井臺 */

註釋標記與說明文字之間的空格沒有實際意義,僅僅是看過去顯得不那麼擁擠罷了。由於雙斜杆表達的註釋一般言簡意賅,不會太囉嗦,因此本系列的文章主要採取雙斜杆對說明文字加以註釋。

太史公

程式設計師寫完程式碼之後,執行程式之時經常要檢查執行過程是否符合預期,這就要求程式能夠自動彙報執行情況,以便開發者事後分析整個執行過程的經過。或者說,小到一個人每天寫日記,大到一個國家編史書,總之該工作好比史官(又稱太史公)辛勤地記載各類史實,計算機程式的史料學名就稱作“日誌”。程式把自身的執行資訊輸出到控制檯(Console視窗)或者輸出到檔案中,便構成了程式的執行日誌。最簡單的日誌輸出程式碼如下所示:

System.out.println("歡迎來到魏國的都城——鄴城。");

從以上程式碼可見,輸出日誌的方法是“System.out.println”,最前面的System表示這裡在進行系統操作,中間的out表示向控制檯輸出資訊;最後面的println表示列印括號內的文字,並跳到下面一行,末尾的ln是line的縮寫。如果把最後面的println改成print,那麼列印完括號內的文字之後,當前定位在該行文字的末尾,而不會跳到下一行的開頭。下面演示看看println和print區別,先用System.out.println列印兩句話,程式碼示例如下:

System.out.println("歡迎來到魏國的都城——鄴城。");
System.out.println("這裡是鄴城的正南門——鳳陽門。");

此時控制檯輸出的日誌資訊如下圖所示: 在這裡插入圖片描述 再用System.out.print列印同樣的兩句話,程式碼示例如下:

System.out.print("歡迎來到魏國的都城——鄴城。");
System.out.print("這裡是鄴城的正南門——鳳陽門。");

此時控制檯輸出的日誌資訊如下圖所示: 在這裡插入圖片描述 由此可見,通過println列印的日誌內容是分行顯示的,而通過print列印的日誌都顯示在同一行。

既然呼叫System.out可以往控制檯輸出日誌,那麼反過來,呼叫System.in也可以從控制檯向程式輸入資訊。只不過輸入文字的接收要分以下兩個步驟: 1、建立一個控制檯的掃描器,隨時盯著控制檯的輸入操作,掃描器的建立程式碼如下所示:

Scanner scan = new Scanner(System.in); // 從控制檯接收輸入文字

2、通過掃描器的nextLine方法獲得一行輸入文字,按下回車鍵表示該行文字輸入完畢。 下面舉個從控制檯獲取輸入資訊的例子,曹操任命張遼鎮守合肥,而孫權親率大軍進攻合肥,張遼在逍遙津之戰中殺得東吳眾將丟盔棄甲。現在往控制檯輸入向張遼挑戰的吳國將領姓名,看看都有誰前來應戰,完整的程式碼示例如下:

package com.donghan.huainan.hefei; // 東漢帝國淮南郡合肥縣

import java.util.Scanner;

public class Hefei {
	
	public static void main(String[] args) {
		System.out.print("這裡是張遼鎮守的合肥城,吳國誰來挑戰?");
		Scanner scan = new Scanner(System.in); // 從控制檯接收輸入文字
		/* nextLine方法表示接收一行文字,以回車鍵結尾 */
		System.out.println("吳國前來挑戰的將領是:"+scan.nextLine());
	}
}

接著通過右鍵選單“Run As”→“Java Application”執行Hefei程式,並在控制檯敲入“甘寧”,然後按下回車鍵。鍵盤輸入前後的控制檯截圖如下所示,可見程式成功讀取到了控制檯的輸入文字。 在這裡插入圖片描述 在這裡插入圖片描述

貿易官

帝國物產豐盈,各地都有聞名遐邇的土特產,比如曹操南征宛城張繡,結果反遭張繡暗算,致使大將典韋陣亡,這個宛城便是漢代最大的冶鐵中心。此外,蜀漢的成都平原盛產蜀錦,而東吳的景德鎮則盛產陶瓷。既然各地出產多種多樣,不妨互通有無,大家做個貿易,你賣你的,我賣我的,各取所需,皆大歡喜。這個進出口貿易,就由專門的貿易官來掌管。貿易官既負責出口商品,也負責進口商品。對於出口貿易來說,需要區分哪些地方是對外開放城市,又有哪些貨物是允許出口的普通商品。 對外開放在Java程式碼中使用關鍵字public來表達,凡是被public字首修飾了的城池,都是對外開放城市,凡是被public字首修飾了的東西,都是允許出口的貨物。譬如下面的程式碼例子,指定了宛城是座對外開放城市,並且當地出產的鐵器也是可供出口的貨物。

package com.donghan.nanyang.wanxian; // 東漢帝國南陽郡宛縣

public class Wancheng {

	public static void getIron() {
		System.out.println("從宛城得到了一大批的鑄鐵兵器。");
	}

	public static void main(String[] args) {
		System.out.println("歡迎來到大漢的冶鐵中心——宛城。");
	}
}

現在其它地方想要進口宛城的鐵器,就得通過貿易官開展進口貿易。貿易官首先通過關鍵字import說明將要從某地進口商品,就像如下程式碼這般表示: import com.donghan.nanyang.wanxian.Wancheng; // 準備從宛城進口商品 然後在具體執行的程式碼段中新增來自Wancheng(宛城)的貿易進口程式碼。再舉個例子,想當年關羽大舉北伐,訊息傳到襄陽,曹軍主將曹仁趕忙從宛城進口了一批鐵質兵器,意圖加強軍備抵抗蜀軍。這樣的話,Xiangyang(襄陽)這個地方,需要宣告import(進口)來自Wancheng(宛城)的鐵器。於是完整的Xiangyang城程式碼如下所示:

package com.donghan.nanjun.xiangyang; // 東漢帝國南郡襄陽縣

import com.donghan.nanyang.wanxian.Wancheng; // 準備從宛城進口商品

public class Xiangyang {

	public static void main(String[] args) {
		System.out.println("這裡是華夏第一城池——襄陽城。");
		Wancheng.getIron(); // 開展從宛城進口鐵器的貿易
	}
}

最後仍舊通過右鍵選單“Run As”→“Java Application”執行Xiangyang程式,程式執行結果如下圖所示。 在這裡插入圖片描述 可見Wancheng(宛城)的鐵器被進口到了Xiangyang(襄陽),用程式設計的專業術語來說,是Xiangyang這個類呼叫了Wancheng那個類的getIron方法。