学习提示:本节给出了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 |
从左到右 |
相等 |
== != |
从左到右 |
按位与 |
& |
从左到右 |
按位异或 |
^ |
从左到右 |
按位或 |
| |
从左到右 |
逻辑与 |
&& |
从左到右 |
逻辑或 |
|| |
从左到右 |
条件 |
? : |
从右到左 |
赋值 |
= += -= *= /= %= ^= <<= >>= >>>= |
从右到左 |