Java开发笔记(四)Java帝国的度量衡
秦始皇统一中国之后,实行“书同文,车同轨”,把货币和各种度量衡都统一起来,从而缔造了一个秩序井然的帝国。既然统一度量衡是每个帝国都要做的事情,Java帝国也不例外,对于人生地不熟的初学者来说,只有认识了Java帝国的各种度量衡,才能更好地入乡随俗。
Java帝国的人名称呼
若想在一个国家与当地人沟通交流,首先要理解当地的语言以及对人的称呼。在计算机世界里,Java帝国的编程语言主要采用英文字母书写,另外包括阿拉伯数字与半角的标点符号。至于各种实体的名称,则基本遵守以下的命名规范(非强制性,建议遵守):
1、工作空间workspace的名称:由英文字母、数字与下划线组成,工作空间名称建议用字母开头。
2、项目Project的名称:由英文字母、数字与下划线组成,项目名称建议用大写字母开头。
3、包package的名称:各层级的名称用点号分隔,每个层级的名称建议采用小写字母书写。
4、Class的名称:建议由字母和数字组成,并且用大写字母开头。这很好理解,堂堂一座城池的大名当然开头要大写。
5、方法的名称:建议由字母、数字和下划线组成,并且用小写字母开头。
6、变量(其值允许修改)的名称:建议由字母、数字和下划线组成,并且用小写字母开头。
7、常量(其值不允许修改)的名称:建议由字母、数字和下划线组成,用大写字母开头并且里面的字母全为大写。
此外,代码的格式与对齐也很重要,规范的代码排版看起来使人舒服,也能提高编码效率。当然这种排版工作无需开发者在编码时特别关注,可以在敲完一段代码后,再命令Eclipse自动进行代码格式化动作。这个代码格式化操作有以下几个途径可以完成:
1、依次选择顶部菜单栏的“Source”→“Format”,即可对选中代码自动格式化。
2、在主界面左侧项目结构中右击某个package,并依次选择右键菜单的“Source”→“Format”,即可对该包下的所有代码进行格式化。
3、在代码文件内部右击,并依次选择右键菜单的“Source”→“Format”,即可格式化该代码文件。
Java帝国的记数方式
数字的进制是又一个重要的度量衡,由于人类的双手一共有十根手指,因此大部分文明的数制都是十进制,只有少量文明是例外,比如巴比伦文明的楔形数字为60进制,而玛雅文明则为20进制。计算机行业的半导体,在接通状态时表示1,在断开状态时表示0,故而计算机的数制采取二进制。显然二进制的数字不易为常人所理解,于是编程语言通常会再引入十进制、十六进制乃至八进制的数制表达。Java语言固然也不例外,话虽如此,但又如何证明Java帝国的基础数制是二进制呢?
接下来我们使用Java代码做个实验,看看Java代码的基础数制究竟为何?为开展该实验,会用到一种位运算符,位运算符主要包括两个操作,其一为左移操作符“<<”,其二为右移操作符,所谓左移右移,就是把数字高位移动还是往低位移动。譬如说数字80,把它左移一位,则表示将该数字整体向高位挪动一格,末位空的地方补0,于是数字80左移一位就变成了800。如若把数字80右移一位,则表示将该数字整体向低位挪动一格,挪走的末位直接略去,于是数字80右移一位就变成了8。上面说的数字80左移一位变800、右移一位变8,其实是基于十进制数字的前提,倘若原始数字的基础数制并非十进制,那么左移和右移的结果将迥然不同。
现在有个十进制的数字8,换算成二进制数则为00001000。如果Java的基础数制为十进制,数字8左移一位的结果就是80;如果Java的基础数制为二进制,00001000左移一位的结果就是00010000,移动后的二进制数换算成十进制则为16。这样的话,数制实验只需观察左移和右移后的结果数字,即可验证当前环境采用的是哪一种基础数制。下面的测试代码便是检验左移与右移结果的例子:
public class Number { public static void main(String[] args) { int x = 8; // 8对应的二进制数为00001000 int y = x << 2; // 00001000左移两位后变成00100000,左移结果转成十进制则为32 int z = x >> 2; // 00001000右移两位后变成00000010,右移结果转成十进制则为2 System.out.println("原始数字x="+x); System.out.println("x左移两位后="+y); System.out.println("x右移两位后="+z); } }
右击该代码,并依次选择右键菜单的“Run As”→“Java Application”,命令执行Number程序,主界面下方Console窗口的日志输出情况如下图所示。
可见数字8左移两位后的结果是32,右移两位后的结果是2,从而印证了二进制是Java帝国基础数制的说法。
Java帝国的纪年开端
一个帝国除了制定响亮的国号,还要更换年号,以便社会生活通过纪年表达时间的先后顺序。例如,现代社会采用的公元纪年,是以耶稣诞生之年作为纪年的开始;而东汉末年常见的建安年号,则以曹操劫持汉献帝到许昌为开端(也就是著名的“挟天子以令诸侯”),像官渡之战发生于建安五年,赤壁之战发生于建安十三年。那么Java作为美国人发明的编程语言,它是否也采用西方通行的公元纪年呢?
要想获取Java帝国的纪年倒也不难,只要引入系统日期库中的Date工具就能实现。Date工具提供了一个getYear方法,利用该方法即可得知指定日期的年份是什么。因而检验Java的纪年方式可分解为以下两个步骤:
1、获取当前日期。
2、根据当前日期调用getYear方法得到当前年份。
根据上述两个验证步骤,下面的测试代码给出了具体的演示例子:
import java.util.Date; // 引入系统库中的Date工具 public class Year { public static void main(String[] args) { // 创建一个当前日期时间的实例 Date date = new Date(); // 从当前日期中获取当前年份 int year = date.getYear(); System.out.println("year="+year); } }
右击该代码,并依次选择右键菜单的“Run As”→“Java Application”,命令执行Year程序,此时Console窗口的日志如下图所示。
观察输出的日志结果为“year=118”,并非当前时间的公元纪年2018,这个2018减去118等于1900,原来Java帝国是以公元1900年为开端的呀。由此可见,编程世界自有一套规矩方圆,初学者得小心谨慎,切不可自以为然。