学习提示:本节给出了Java语言中的所有操作符以及它们的用法和描述,还给出了它们的优先级,以供随时查阅。
Java语言中的操作符及操作符的优先级
算术操作符
Operator | Use | Description |
+ | op1 + op2 | 返回op1和op2的和 |
- | op1 - op2 | 返回op1和op2的差 |
* | op1 * op2 | 返回op1和op2的积 |
/ | op1 / op2 | 返回op1除以op2的商 |
% | op1 % op2 | 返回op1除以 op2的余数 |
关系操作符
Operator | Use | Description |
> | op1 > op2 | 当op1 大于op2 时返回true |
>= | op1 >= op2 | 当op1 大于或等于op2 时返回true |
< | op1 < op2 | 当op1 小于op2 时返回true |
<= | op1 <= op2 | 当op1 小于或等于op2 时返回true |
== | op1 == op2 | 当op1 等于大于op2 时返回true |
!= | op1 != op2 | 当op1 不等于op2 时返回true |
条件操作符
Operator | Use | Description |
&& | op1 && op2 | 当op1和op2都是true时,返回true ;如果op1的值是false,则不运算右边的操作数 |
|| | op1 || op2 | 当op1和op2有一个是true时,返回true;如果op1的值是true,则不运算右边的操作数 |
! | ! op | 当op是false时,返回true;当op是true时,返回false |
& | op1 & op2 | 运算op1和op2;如果op1和op2都是布尔值,而且都等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位与操作 |
| | op1 | op2 | 运算op1和op2;如果op1和op2都是布尔值,而且有一个等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位或操作 |
^ | op1 ^ op2 | 运算op1和op2;如果op1和op2不同,即如果有一个是true,另一个不是,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位异或操作 |
移动操作符
Operator | Use | Operation |
>> | op1 >> op2 | 将op1的位向右移动,距离由op2决定;左边的位填上最高位(符号位) |
<< | op1 << op2 | 将op1的位向左移动,距离由op2决定;右边的位填上0 |
>>> | op1 >>> op2 | 将op1的位向右移动,距离由op2决定;左边的位填上0 |
位操作符
Operator | Use | Operation |
& | op1 & op2 | 运算op1和op2;如果op1和op2都是布尔值,而且都等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位与操作 |
| | op1 | op2 | 算op1和op2;如果op1和op2都是布尔值,而且有一个等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位或操作 |
^ | op1 ^ op2 | 运算op1和op2;如果op1和op2不同,即如果有一个是true,另一个不是,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位异或操作 |
~ | ~op2 | 位补,即反转op2的每一位,如果位是1,结果是0,如果位是0,结果是1 |
位与
op1 | op2 | Result |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
位或
op1 | op2 | Result |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
位异或
op1 | op2 | Result |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
赋值操作符
Operator | Use | Equivalent to |
+= | op1 += op2 | op1 = op1 + op2 |
-= | op1 -= op2 | op1 = op1 - op2 |
*= | op1 *= op2 | op1 = op1 * op2 |
/= | op1 /= op2 | op1 = op1 / op2 |
%= | op1 %= op2 | op1 = op1 % op2 |
&= | op1 &= op2 | op1 = op1 & op2 |
|= | op1 |= op2 | op1 = op1 | op2 |
^= | op1 ^= op2 | op1 = op1 ^ op2 |
<<= | op1 <<= op2 | op1 = op1 << op2 |
>>= | op1 >>= op2 | op1 = op1 >> op2 |
>>>= | op1 >>>= op2 | op1 = op1 >>> op2 |
其他操作符
Operator | Description |
?: | 简写的的if-else语句,唯一的三元操作符 |
[] | 用于声明数组、创建数组和访问数组元素 |
. | 用于组成限定名 |
( params ) | 标出一个以逗号分隔的参数列表的范围 |
( type ) | 将一个值转换为指定的类型 |
new | 创建一个对象或数组 |
instanceof | 判断它的第一个操作数据数是否是它的第二个操作数的实例 |
操作符优先级
postfix perators | [] . (params) expr++ expr-- |
unary operators | ++expr --expr +expr -expr ~ ! |
creation or cast | new (type)expr |
multiplicative | * / % |
additive | + - |
shift | << >> >>> |
relational | < > <= >= instanceof |
equality | == != |
bitwise AND | & |
bitwise exclusive OR | ^ |
bitwise inclusive OR | | |
logical AND | && |
logical OR | || |
conditional | ? : |
assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
注:上面的操作数优先级从上到下依次降低,同一个单元格内的优先级相同
操作 | 优先级 | 结合性 |
后缀运算符 | [ ] . ( ) (函数呼叫) | 从左到右 |
单目运算符 | ! ~ ++ -- +(单操作数) –(单操作数) | 从右到左 |
创建 | new | 从左到右 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> >>> | 从左到右 |
关系 | < <= > >= instanceof | 从左到右 |
相等 | == != | 从左到右 |
按位与 | & | 从左到右 |
按位异或 | ^ | 从左到右 |
按位或 | | | 从左到右 |
逻辑与 | && | 从左到右 |
逻辑或 | || | 从左到右 |
条件 | ? : | 从右到左 |
赋值 | = += -= *= /= %= ^= <<= >>= >>>= | 从右到左 |