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("这里是邺城的正南门——凤阳门。");

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

f48c9551efe685ac1765152ec17b655e.png

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

System.out.print("欢迎来到魏国的都城——邺城。");

System.out.print("这里是邺城的正南门——凤阳门。");

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

7792feaa1cfeaf4a198f612921913351.png

由此可见,通过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程序,并在控制台敲入“甘宁”,然后按下回车键。键盘输入前后的控制台截图如下所示,可见程序成功读取到了控制台的输入文字。

2bcf3e804b9f41314493f7d23ee21894.png

05f752ed626d02d29a363262d42b948e.png

贸易官

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

对外开放在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程序,程序运行结果如下图所示。

3f43b88a13c579681f3a20f6869d7e9a.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入react技术栈(10):受控组件和非受控组件

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 受控组件 非受控组件 受控组件和非受控组件的区别 文章参考深入React技术栈

sscanf函数和正则表达式

From: http://hi.baidu.com/cr0_3/blog/item/c98f6ad0d54d9a0d3af3cfa2.html 看了几篇介绍sscanf函数&#xff0c;真是发现自己好多东西没理解透。 第一篇&#xff1a; 此文所有的实验都是基于下面的程序&#xff1a; char str[10]; for (int i 0; i < 10; i) str[i] !; 执…

静态和动态include

今天突然意识到野猪对静态和动态的include的区别理解有点模糊&#xff0c;现在总结一下&#xff1a; 动态include&#xff1a;<jsp: include page"include.jsp" fulsh"true"> 总是会检查所含文件中的变化&#xff0c;适用于包含动态页面&#xff1b;…

T-SQL备忘(6):常用内置函数

T-SQL备忘(6)&#xff1a;常用内置函数 日期和时间函数&#xff1a; 1.获取当前时间&#xff1a;GETDATE() select GETDATE()返回&#xff1a; 2015-04-27 20:52:06.700 2.返回时间的部分&#xff08;日、月、年&#xff09; a.获取日&#xff1a; select DAY(GETDATE()) ---等…

java python 运行 内存_Python C Java中字符串在内存中的存储

Python昨天在讲Python的过程中&#xff0c;发现了一个小问题&#xff0c;当时课上没有解决&#xff0c;下面特意查阅资料解决了一下。a "123"b "123"print(id(a) id(b)) #此处结果为True&#xff0c;也可以写成print(a is b)c "python.org"d…

数万字的0基础React知识大纲一定要藏藏好

第1章&#xff1a;React入门 1.1.React简介 1.1.1 官网 1.英文官网: https://reactjs.org/ 2.中文官网: https://react.docschina.org/ 1.1.2介绍描述 1.用于动态构建用户界面的 JavaScript 库(只关注于视图) 2.由Facebook开源 1.1.3React的特点 1.声明式编码 2.组件化编…

Copy-on-Iterate java 代码风格

Copy-on-Iterate java 代码风格 Copy-on-Iterate 是一种iterate collection 通用的一种写法 for(Iterator i new ArrayList(collection).iterator(); i.hasNext();) {...} 这种写法是在使用集合(collections)时有可能会出现一个问题&#xff0c;就是当我们重复迭代这个集合时&…

典型的 C++ 程序员成长经历

From:http://blog.csdn.net/breakerzy/article/details/7399872 一个典型的 C 程序员成长经历&#xff1a; 1. 完整的学一遍 C 所有语言特性&#xff0c;典型书籍 "The C Programming Language" Part1, Part2, "C Primer" 感觉 C 像大杂烩&#xf…

类头注释生成

1. 打开VS2013的安装目录 2. 找到Common7文件夹&#xff0c;接着打开 Common7\IDE\ItemTemplatesCache 3. 在这里我们会看到VisualBasic文件夹&#xff0c;依次打开 VisualBasic\Code\2052\Class &#xff0c;找到Class.vb文件并且以记事本方式打开&#xff0c;在其中加入以下的…

在java中添加源_关于Java:如何在Android Studio中添加链接的源文件夹?

在Eclipse中&#xff0c;我可以将源文件夹作为"链接的源文件夹"添加到我的android项目中。 如何在Android Studio中实现同一目的&#xff1f;或者是否可以添加外部文件夹以构建gradle&#xff1f;在您的build.gradle中将以下内容添加到android节点的末尾android {...…

ant design datepicker处理日期范围操作

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣学习前端知识 1需求 此刻日期之前的不能选择 当天日期结束时间比开始时间打 基本样式 <Row gutter{12}><Col span{12}><Form.Item label"活动开始时间">{getFieldDecorator(startTi…

proe2001安装指南

1.系统环境设置:安装PROE2001的硬盘必须是NTFS格式,所以操作平台最好是WINDOWS2000,WIN-XP,或NT4.0,必须附带一张网卡,普通的以太网卡也行(当然,PROE2001已推出可以在WIN98的FAT格式下安装的版本,但由于其不稳定性,且运行速度极慢,笔者建议最好不要安装此版本).我以WIN-XP为例.…

第二十三天 how can I 坚持

今天一90后小伙管我叫大神。。。小菜鸟一枚&#xff0c;哎。遗憾啊。不能很好的利用碎片时间&#xff0c;时间都去哪儿了。今天同学给我共享了他买的智能插座还有小米空气净化器&#xff0c;小米啊&#xff0c;节奏好快。感觉中国现在能和小米竞争的就只有360了&#xff0c;乐视…

深入react技术栈(11):样式处理

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注前端小歌谣 基本样式设置 样式中的像素值 使用className库 Css Modules css模块化遇到了哪些问题 css模块化方案 样式默认局部 使用compose组装样式 class命名技巧 实现css与js共享 外部如何覆盖局部样式 设置样式共存we…

python .center用法_Python Pandas Series.str.center()用法及代码示例

Series.str可用于以字符串形式访问系列的值并对其应用几种方法。 Pandas Series.str.center()函数用于在系列/索引中的字符串的左侧和右侧填充其他字符。该功能等效于Python的str.center()。用法&#xff1a; Series.str.center(width, fillchar’ ‘)参数&#xff1a;width:产…

点到点链路上的OSPF协议

点到点链路上的OSPF协议 OSPF的几个术语&#xff1a; 链路&#xff1a;路由器用来连接网络的接口&#xff1b; 链路状态&#xff1a;描述路由器的接口及其与邻居路由器的关系。所有链路状态信息构成链路状态数据库&#xff1b; 区域&#xff1a;有相同区域标识的一组路由器和网…

BASH中字符串的处理

BASH中字符串的处理 得到长度: 源码: %x"abcd" #方法一 %expr length $x 4 # 方法二 %echo ${#x} 4 # 方法三 %expr "$x" : ".*" 4 # expr 的帮助 # STRING : REGEXP anchored pattern match of REGEXP inSTRING 查找子串: 源码: …

用css实现三角效果

CSS border原理 一个div或者元素的border并不是我们直观意义上的一条有高度的线&#xff0c;而是一个等高梯形或者三角形&#xff08;宽高为0时&#xff09;&#xff0c;可以看一下效果&#xff1a; HTML: <div class"arrow1"></div> CSS: .arrow1{ font…

java响应很慢排插_服务响应时间慢:Java SecureRandom和/ dev / random - java

我正在尝试调试Tomcat上部署的应用程序提供的一些慢速响应。现在&#xff0c;我主要关注SecureRandom和/dev/random(其他一些可能的原因已被调查并排除)。模式如下:第一个调用恰好在Tomcat重新启动后(即使请求在启动后4分钟到达)也仅需30.0 xy秒稍后&#xff0c;某些调用恰好需…