3.1赋值运算符 =
3.2扩展运算符
+= -= *= /= %=
+= 先加然后再赋值
-= 先减然后再赋值
……
3.3 比较运算符
运算符 语法 有效数据类型
小于 < byte, short, int, long, float, double, char
小于等于 <= byte, short, int, long, float, double, char
大于 > byte, short, int, long, float, double, char
大于等于 >= byte, short, int, long, float, double, char
等于 == byte, short, int, long, float, double, char, boolean, 引用
不等于 != byte, short, int, long, float, double, char, boolean, 引用
instanceof instanceof 引用
3.4++ —
1、a ++ ++a 如果不参与任何计算,也不参与任何赋值,效果等同,都是+1
2、但是如果参与运算,a++ 将使用a原本的值进行计算,最后再 自+1
3、++a 如果参与运算,先自+1,然后再参与运算
3.5 移位运算符
<< 向左移动
2 << 4 将2 向左移4位
0000 0010 整体向左移4位 0010 0000 == 32
0000 0010 整体向左移3位 0001 0000 == 16
0000 0010 整体向左移2位 0000 1000 == 8
0000 0010 整体向左移1位 0000 0100 == 4
得到的结论:
数 * 2 ^ n == 移之后的值
>>向右移动
64 >> 4 将64右移4位
0100 0000 整体向右移4位 0000 0100 == 4
0100 0000 整体向右移3位 0000 1000 == 8
0100 0000 整体向右移2位 0001 0000 == 16
0100 0000 整体向右移1位 0010 0000 == 32
得出的结论:
数 / 2 ^ n == 移之后的值
>>>不考虑符号右移
-100 将右移动2位
1001 1100 不考虑符号的整体向右移动 2位 0010 0111
这种移位,导致的结果是:会将一个负数,直接变成1个正整数,但是使用的场景非常的少,只是某些特殊场合有效,例如:随机函数
3.6 按位运算符 & | ^
按位与
例如: 5 & 3
0000 0101
&
0000 0011
= 0000 0001
true & false == false
按位或
例如: 5 | 3
0000 0101
|
0000 0011
=0000 0111 7
按位异或 ^
5 ^ 3
只有0 1的组合才是1,其余都是0
0000 0101
^
0000 0011
= 0000 0110 == 6
3.7 逻辑运算符 && || !
按位运算符即可按位数字,又可以按位布尔值。但是逻辑运算符 的两侧,只能放置布尔值
逻辑与(和) —- 短路和
真真为真 真假为假 假假为假
只要前面的条件有false,后面的条件就不需要判断,直接返回false。
逻辑或 ||
真真为真,真假为真,假假为假
只要前面的条件有true,后面的条件就不需要判断,直接返回true。
除非前面的条件都是false,才依次判断后面的条件
逻辑非 !
非真即假 非假即真
