java运算符的优先级

运算符

优先级

优先级 运算符 结合性
1 () 括号运算符 由左至右
2 !、+(正号)、-(负号) 一元运算符 由左至右
2 ~ 位逻辑运算符 由右至左
2 ++、– 递增与递减运算符 由右至左
3 *、/、% 算术运算符 由左至右
4 +、- 算术运算符 由左至右
5 <<、>> 位左移、右移运算符 由左至右
6 >、>=、<、<= 关系运算符 由左至右
7 ==、!= 关系运算符 由左至右
8 & 位运算符、逻辑运算符 由左至右
9 ^ 位运算符、逻辑运算符 由左至右
10 位运算符、逻辑运算符
11 && 逻辑运算符 由左至右
12
13 ? : 条件运算符 由右至左
14 =、+=、-=、*=、/=、%= 赋值运算符、扩展运算符 由右至左

逻辑运算符

运算符 说明
逻辑与 &( 与) 两个操作数为true,结果才是true,否则是false
逻辑或 (或)
短路与 &&( 与) 只要有一个为false,则直接返回false
短路或
逻辑非 !(非) 取反:!false为true,!true为false
逻辑异或 ^(异或) 相同为false,不同为true
Integer.toBinaryString 一个整数的二进制表达
<< 左移
>> 右移
>>> 带符号右移与无符号右移

条件运算符

语法格式:
1 x ? y : z
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。

带符号右移 >>

对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0
对于负数, 带符号右移 >> 会把所有的位右移,并在最前面补1

无符号右移>>>

如果是一个负数,那么对应的二进制的第一位是1
无符号右移>>>会把第一位的1也向右移动,导致移动后,第一位变成0
这样就会使得负数在无符号右移后,得到一个正数

自增 自减

++ –
i++ 先赋值再自增
++i先自增再赋值