欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java开发笔记(三)Java帝国的特种官吏

程序员文章站 2022-05-23 22:13:37
上一篇文章介绍了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("这里是邺城的正南门——凤阳门。");

 

此时控制台输出的日志信息如下图所示:

Java开发笔记(三)Java帝国的特种官吏

再用system.out.print打印同样的两句话,代码示例如下:

		system.out.print("欢迎来到魏国的都城——邺城。");
		system.out.print("这里是邺城的正南门——凤阳门。");

此时控制台输出的日志信息如下图所示:

Java开发笔记(三)Java帝国的特种官吏

由此可见,通过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开发笔记(三)Java帝国的特种官吏

Java开发笔记(三)Java帝国的特种官吏

 

贸易官
帝国物产丰盈,各地都有闻名遐迩的土特产,比如曹操南征宛城张绣,结果反遭张绣暗算,致使大将典韦阵亡,这个宛城便是汉代最大的冶铁中心。此外,蜀汉的成都平原盛产蜀锦,而东吴的景德镇则盛产陶瓷。既然各地出产多种多样,不妨互通有无,大家做个贸易,你卖你的,我卖我的,各取所需,皆大欢喜。这个进出口贸易,就由专门的贸易官来掌管。贸易官既负责出口商品,也负责进口商品。对于出口贸易来说,需要区分哪些地方是对外开放城市,又有哪些货物是允许出口的普通商品。
对外开放在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程序,程序运行结果如下图所示。

Java开发笔记(三)Java帝国的特种官吏

可见wancheng(宛城)的铁器被进口到了xiangyang(襄阳),用编程的专业术语来说,是xiangyang这个类调用了wancheng那个类的getiron方法。