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

来源:https://www.cnblogs.com/pinlantu/archive/2018/09/27/9716244.html
-Advertisement-
Play Games

上一篇文章介紹了Java工程的帝國區劃,末尾給出了一段Java代碼例子,這個代碼雖然勉強能看懂,但是有些細節令人不甚了了。比如說“// 參觀朱雀台”為何能夠直接跟在當前行後面?“System.out.println”又為何被點號繞了三道灣?顯然這裡面必定有一些規則需要遵守,好比到了一個國家就要入鄉隨 ...


上一篇文章介紹了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方法。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文出自: "http://cmsblogs.com" import 標簽解析完畢了,再看 Spring 中最複雜也是最重要的標簽 bean 標簽的解析過程。 在方法 中,如果遇到標簽 為 bean 則調用 方法進行 bean 標簽解析,如下: 整個過程分為四個步驟 1. 調用 進行元素解析,解析過 ...
  • 前言 此系列是針對springboot的啟動,旨在於和大家一起來看看springboot啟動的過程中到底做了一些什麼事。如果大家對springboot的源碼有所研究,可以挑些自己感興趣或者對自己有幫助的看;但是如果大家沒有研究過springboot的源碼,不知道springboot在啟動過程中做了些 ...
  • 前言 為了攔截大部分請求,秒殺案例前端引入了驗證碼。淘寶上很多人吐槽,等輸入完秒殺活動結束了,對,結束了...... 當然了,驗證碼的真正作用是,有效攔截刷單操作,讓羊毛黨空手而歸。 驗證碼 那麼到底什麼是驗證碼呢?驗證碼作為一種人機識別手段,其終極目的,就是區分正常人和機器的操作。我們常見的互聯網 ...
  • Integer內部組成解析,常用方法簡介以及使用註意事項說明 ...
  • "題目鏈接" rmq求LCA,interesting。 一直沒有學這玩意兒是因為CTSC的Day1T2,當時我打的樹剖LCA 65分,gxb打的rmq LCA 45分。。。 不過rmq理論複雜度還是小一點的,就學一下把。 RMQ求LCA 我們要用到三個數組 $dfn[i]$:第$i$個節點位置的時間 ...
  • 智能指針 shared_ptr 和 new結合使用 用make_shared函數初始化shared_ptr是最推薦的,但有的時候還是需要用new關鍵字來初始化shared_ptr。 一,先來個表格,嘮嘮new和shared_ptr | 操作 | 功能描述 | | | | | shared_ptr\ ...
  • Spring能做什麼 1. 能根據配置文件創建及組裝對象之間的依賴關係; 2. 面向切麵編程,能幫助我們無耦合的實現日誌記錄,性能統計,安全控制等; 3. 提供第三方數據訪問框架(如Hibernate),而且自己也提供了一套JDBC訪問模板方便訪問資料庫; 4. 非常簡單的管理資料庫事務; 5. 集 ...
  • 函數式介面在Java中是指:有且僅有一個抽象方法的介面 ; 函數式介面,即適用於函數式編程場景的介面。而Java中的函數式編程體現就是Lambda,所以函數式介面就是可以適用於Lambda使用的介面。只有確保介面中有且僅有一個抽象方法,Java中的Lambda才能順利地進行推導。 基本格式語法: 修 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...