# 数据类型
boolean 只有 true, false; null, 0 不能表示 false
# 基本数据类型转换
byte, short, char 之间不会相互转换,它们在计算时会首先转换为 int 类型.
1 | short s = 2; |
boolean 类型不可以转换为其它数据类型
# 数据运算
char 类型数据可以做数学运算,在做数学运算的时候把字符转换为 ASCII 码进行计算
字符串与其它数据类型相加时,实际上时把其它数据转换为字符串,做字符串的拼接
1 | // char 类型数据可以做数学运算,在做数学运算的时候把字符转换为 ASCII 码进行计算 |
逻辑运算符
&
逻辑与, |
逻辑或, !
逻辑非, ^
逻辑异或
&&
短路与, ||
短路或
a | b | a&b | a|b | !a | a^b | a&&b | a||b |
---|---|---|---|---|---|---|---|
true | true | true | true | false | false | true | true |
true | false | false | true | false | true | false | true |
false | true | false | true | true | true | false | true |
false | false | false | false | true | false | false | false |
位运算
& | ^
也可以参与位运算
a | b | a&b | a|b | a^b |
---|---|---|---|---|
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
1 | -15 : 11111111 11111111 11111111 11110001 & |
<< >> >>>
有符号左移,有符号右移,无符号右移
<<
左移 空位补 0, 被移除的高位丢弃,空缺位补 0>>
被移位的二进制最高位是 0, 右移后,空缺位补 0; 最高位是 1, 空缺位补 1>>>
被移位二进制最高位无论是 0 或者是 1, 空缺位都补 0
负数二进制
15 二进制 00000000 00000000 00000000 00001111
反码 (按位取反) 11111111 1111111 1111111 11110000
补码 (加 1) 11111111 1111111 1111111 11110001
-15 二进制 11111111 11111111 11111111 11110001
1 | System.out.println(0b11111111111111111111111111110001); // -15 |