Java学习日记9.18

Java学习日记9.18

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){}

两者是一样的,表示同一个意思,尽量使用第二个,因为第二个短