版权声明:本文为博主ExcelMann的原创文章,未经博主允许不得转载。
第3章 Java的基本程序设计结构
作者:ExcelMann,转载需注明。
第2章是关于Java程序设计环境的介绍(包括JDK、JRE、使用IDE、命令行工具以及JShell),在此省略。
第3章内容目录:
- 一个简单的Java应用程序
- 注释
- 数据类型
- 变量与常量
- 运算符
- 字符串
- 输入输出
- 控制流
- 大数
- 数组
该篇文章主要记录书中提到的一些本人觉得值得注意的点(偏主观,但希望对你有用~)。
一、 一个简单的Java应用程序
注意点:
- Java区分大小写;
- Java应用程序中的全部内容都必须放置于类中;
- 类名采用骆驼命名法;
- 源代码的文件名必须与公共类的名字相同;
- Java虚拟机总是从指定类中的main方法的代码开始执行;
- main方法必须声明为public;
二、 注释
注意点:
- 注释不会出现在class文件中;
- /**…*/这种注释可以自动生成文档;
- 注释不能嵌套;
三、 数据类型
注意点:
- Java有一个能够表示任意精度的算术包,通常称为“大数”(big number),而且它是一个Java对象,而不是Java类型;
- 从Java7开始,为数字字面量加下划线,比如1_000_000表示100万,在Java编译时会去除这些下划线;
- Java没有任何无符号(unsigned)形式的int、long、short或者byte类型;
- 可以使用十六进制表示浮点数值,其中使用p表示指数,而不是e。注意,尾数采用十六进制,指数采用十进制,而且指数的基数为2而不是10。比如,0.125 = 2^-3可以表示为0x1.0p-3;
- 所有的浮点数值计算都遵循IEEE 754规范。但是,有三种特殊的浮点数值:正无穷大、负无穷大、NaN(不是一个数字),分别采用Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN表示(以及相应的float类型);
- 浮点数会出现舍入误差的情况,比如2.0-1.1会等于0.8999999…。主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确地表示分数1/10(类似十进制无法表示1/3)。这种情况,应该采用BigDecimal类。
- char的值可以表示为十六进制,其范围从\u0000到\uFFFF。对于转义序列\u还可以出现在加引号的字符常量或者字符串之外(而其他所有转义序列不可以)。
例如:public static void main(String \u005B\u005D args),其中\u005B\u005D表示[]; - Unicode转义序列会在解析代码之前得到处理。
例如:"\u0022+\u0022"并不是等于一个由引号包围加号构成的字符串。实际上,\u0022在解析之前就转换为",所以会得到""+""(即为空串); - 在Java中,char类型描述了UTF-16编码中的一个代码单元;
- 强烈建议不要在程序中使用char类型,除非确实需要处理UFT-16代码单元。最好将字符串作为抽象数据类型处理;
- 整形值和布尔值之间不能进行相互转换(有的语言中,值0等价于布尔值false);
补充知识(码点、代码单元):
1)码点(code point)是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,码点采用十六进制书写,加上前缀U+,如U+0041是字母A的码点。
2)Unicode的码点可以分为17个代码平面。第一个代码平面称为基本多语言平面,包括码点从U+0000到U+FFFF的经典Unicode代码;其余的16个平面的码点为从U+10000到U+10FFFF,包括辅助字符。
3)代码单元:在基本多语言平面中,每个字符用16位表示,通常称为代码单元;
4)而辅助字符编码为一对连续的代码单元。采用这种编码对表示的各个值落入基本多语言平面中未用的2048个值范围内,通常称为替代区域(U+DB00~U+DBFF用于第一个代码单元,U+DC00+U+DFFFF用于第二个代码单元)。
四、 变量与常量
注意点:
- 尽管$符号是一个合法的Java字符,但是不要在代码中使用这个字符。它只用在Java编译器或者其他工具生成的名字中;
- 不提倡一行中声明多个变量,逐一声明每一个变量可以提高程序的可读性;
- 变量的声明尽可能地靠近变量第一次使用的地方;
- 从Java10开始,对于局部变量,可以只使用关键字var而无须指定类型;
如:var vacationDays = 12; //从初始值就能推断出它的类型 - 习惯上,常量名使用全大写;
- 如果希望某个常量可以在一个类的多个方法中使用,通常将这些常量称为类常量,用static fianl设置;
五、 运算符
注意点:
- 整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或者NaN结果;
- 浮点数算数运算的可移植性:虚拟机设计者允许对中间计算结果采用扩展的精度,但是,对于使用strictfp关键字标记的方法必须使用严格的浮点计算来生成可再生的结果;
- 如果更加注重Math类计算的可再现性,则用StrictMath类;
- Math类提供了一些方法使得整数运算有更好的安全性。
比如:10亿乘以3的计算结果是错误的结果(因为最大的int值只是刚刚超过20亿,而且程序不会提示这种错误)。如果用Math.multiplyExact(