9.18
数据类型
整数扩展
进制
二进制: ob
十进制: 没有
八进制: 0
十六进制: 0x
int i = 10
int i1 = 010
int i2 = 0x10
输出结果将会是
10
8
16
浮点数拓展
float 定义的小数必须在后边加一个f或F
(因为小数默认的是double,不加f或F会报错)
但是float和double会出现一些问题
问题一
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
最后的输出结果是false
问题二
float d1 =2323223333333f;
float d2 = d1 + 1;
System.out.println(d1==d2);
最后的输出结果是true
原因
float的特点是:有限 离散 舍入误差 大约 接近但不等于
最好完全使用浮点数比较
字符类拓展
char c1 = 'a';
char c2 = '中';System.out.println(c1);
System.out.println((int)c1);
//强制将字符转化为整数类型,所有的字符本身就是数字
System.out.println(c2);
System.out.println((int)c2);
int可以强制将字符类型转化为整数类型,因为所有的字符本质是数字
这涉及到unicode,占两个字节,最多可以表示2^16个字节
用unicode的写法想要输出 a
char c3 = '\u0061'
system.out.println(c3);
转义字符
\\ |
反斜杠 `` | "C:\\Windows" → C:\Windows |
---|---|---|
\" |
双引号 " |
"He said, \"Hi\"" → He said, "Hi" |
\' |
单引号 ' |
'\'Hello\'' → 'Hello' |
\n |
换行符(Line Feed) | "Line1\nLine2" → Line1 + 换行 + Line2 |
\r |
回车符(Carriage Return) | "Hello\rWorld" → World (覆盖"Hello") |
\t |
水平制表符(Tab) | "Name:\tAlice" → Name: Alice |
\b |
退格符(Backspace) | "123\b45" → 1245 (删除'3') |
\f |
换页符(Form Feed) | 打印时跳到下一页 |
\uXXXX |
Unicode 字符 | "\u0041" → A (Unicode 值) |
布尔值拓展
boolean flag = true;
if (flag==true){}
if (flag){}
两者是一样的,表示同一个意思,尽量使用第二个,因为第二个短