第三章 Java的基本程序设计结构
一个简单的Java应用程序
- Java 1.4及以后版本中强制main方法必须是public。
- Java的所有函数都是某个类的方法。
- Java中的main方法必须是静态的。
注释
- /** 开始, */结束用于生成文档。
数据类型
整型
- 长整型后接L或l,十六进制数值有前缀0x或0X,八进制有前缀0。
- 从Java7开始加上前缀0b或0B就可以写二进制数。
- 从Java7开始可以在数字字面量加下划线,如1000_000_000,只为了更易读,Java编译器会去掉这些下划线。
- Java没有无符号形式的int,long,short,byte。
- 可使用Byte.toUnsignedInt(b)来得到一个0到255的int值。
浮点类型
- float类型的数值有后缀F或f。
- 默认为double
- 可使用十六进制来表示浮点数值,如0.125就可以表示为0x1.0p-3,p代表指数,尾数采用十六进制,指数采用十进制,指数基数为2。
- Double.POSITIVE_INFINITY(正无穷大)、Double.NEGATIVE_INFINITY(负无穷大)、Double.NaN(不是一个数字),0/0或负数的平方根结果就为NaN。
- 不可以用 == 检测一个特定的值是否为NaN,应该使用Double.isNaN方法。
- 浮点数值不适用于无法接受舍入误差的计算。
char类型
- char类型可以表示为十六进制值,从\u0000到\uFFFF。
- 转义序列可以出现在加引号的字符字面量或字符串中。
- 转义序列\u还可以出现在加引号的字符常量或字符串,其他转义序列不可以,如String\u005B\u005D就是String[]。
- 注意注释中的\u,会被编译为转义序列,容易出现错误。
Unicode和char类型
- 码点指一个编码表中的某个字符对应的代码值。
- Unicode码点可以分为17个代码平面,其余16个平面码点从U+10000到U+10FFFF,使用代替区域(即第一个代码平面未使用的2048个值),U+D800到U+DBFF作为第一个代码单元,U+DC00到U+DFFF作为第二个代码单元。
boolean类型
- 整型值与布尔值之间不可相互转换。
变量与常量
变量初始化
- 不可使用未初始化的变量。
- 从Java10开始,局部变量如果可以从变量的初始值推断出它的类型,就无需声明类型,使用关键字var即可,如:
var a = 10 ;
。
常量
- const是Java保留的关键字,但目前并没有使用。
枚举类型
-
例如:
enum Size{SMALL, MEDIUM, LARGE, EXTRA_LARGE}; Size s = Size.SMALL;
运算符
算术运算符
- 整数被零除产生异常,浮点数被零除得到无穷大或NaN。
数学函数与常量
- 如果被除数为负数,Math.floorMod()方法可以得到正余数。
- StrictMath类可以确保在不同平台上得到相同的结果。
数值类型之间的转换
-
对浮点数进行舍入运算,如果想得到最接近的整数可使用Math.round方法。
例如
double x = 9.997; int nx = (int)Math.round(x); // nx为10
位运算符
>>>
运算符用0填充高位。- 没有
<<<
运算符。
字符串
构建字符串
- StringBuilder,Java5中引入,前身为StringBuffer,效率更高,但StringBuffer允许采用多线程方法添加或删除字符。
输入输出
- Scanner // 可处理输入流,文件和字符串,文件名要使用path.of(“文件名”)
- PrintWriter // 可处理输出流,文件
- Console // 读取密码时不回显
控制流程
- break、continue可以带标签,跳出多层循环。
大数
- BigInteger、BigDecimal
- 可使用vauleOf(),或者字符串参数构造。
- 不可使用算术运算符,要使用add(),multiply()方法。
数组
数组拷贝
- 使用Arrays.copyOf()方法。