整数拓展:进制
int i1 = 0b10; // 二进制以0b开头 int i2 = 010; // 八进制以0开头 int i3 = 0x10; // 十六进制以0x开头 0~9~A~F System.out.println(i); System.out.println(i2); System.out.println(i3);
输出:
2
8
16
浮点数拓展
float f = 0.1F; // f:0.1 double = 1.0/10 // d:0.1 System.out.println(f==d);
false
float d1 = 213131231231231313123f; float d2 = d1 + 1; System.out.println(d1==d2);
true
按我们的常识来看,上面两段代码的输出结果是错误的。这是因为浮点数的某些特性导致的。
浮点数是有限的,离散的。浮点数存在舍入误差,由于很多数没办法精确的表示,结果只能是一个大约数(接近但不等于)
因此,我们在使用浮点数比较时,最好完全使用浮点数进行比较
记住一个数学工具类,BigDecimal,这个类可以处理很多精确的数学问题。
字符拓展
char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1); System.out.println(c2); System.out.println((int)c2);
a
97
中
20013
这个结果表明了:
- 所有的字符本质还是数字char类型会涉及到编码问题,Unicode编码可以处理各种语言的文字,占用2字节,范围:0~65536,Unicode 表:(97:a 65:A)每个字符在表中都有对应的数字
例如:
char c3 = 'u0061'; System.out.println(c3);
a
转义字符
常用的有两个:
t 制表符n 换行
还有很多,请自行查表
布尔值拓展
boolean flag = true;
if(flag==true){//代码块} // 新手写法
if(flag){//代码块} // 老手写法
Less is More!
代码要精简易读



