运算符优先级
优先级 |
|
运算符 |
1 |
|
. [] () |
2 |
|
++ -- ~ ! (数据类型) |
3 |
|
* / % |
4 |
|
+ - |
5 |
|
<< >> >>> |
6 |
|
< > <= >== |
7 |
|
== != |
8 |
|
& |
9 |
|
^ |
10 |
|
| |
11 |
|
&& |
12 |
|
|| |
13 |
|
?: |
14 |
|
= *= /= &= += -= <<= >>== >>>= &= ^= |= |
算术运算符:
称作四则运算,Java中的算术运算符就是用来处理四则运算的符号 。
操作符 |
描述 |
例子 | ||||||||
+ |
加法 - 相加运算符两侧的值 |
A + B 等于 30 | ||||||||
- |
减法 - 左操作数减去右操作数 |
A – B 等于 -10 | ||||||||
* |
乘法 - 相乘操作符两侧的值 |
A * B等于200 | ||||||||
/ |
除法 - 左操作数除以右操作数 |
B / A等于2 | ||||||||
% |
取模 - 左操作数除以右操作数的余数 |
B%A等于0 | ||||||||
++ |
自增: 操作数的值增加1
|
B++ 或 ++B 等于 21 | ||||||||
-- |
自减: 操作数的值减少1
|
B-- 或 --B 等于 19 |
赋值运算符:
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。
操作符 |
描述 |
例子 |
= |
简单的赋值运算符,将右操作数的值赋给左侧操作数 |
C = A + B将把A + B得到的值赋给C |
+ = |
加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
C + = A等价于C = C + A |
- = |
减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
C - = A等价于C = C - A |
* = |
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
C * = A等价于C = C * A |
/ = |
除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
C / = A等价于C = C / A |
(%)= |
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
C%= A等价于C = C%A |
比较运算符:
比较运算用于对两个数值或变量进行比较。其结果是一个布尔值。
操作符 |
描述 |
例子 |
== |
检查如果两个操作数的值是否相等,如果相等则条件为真。 |
(A == B)为假(非真)。 |
!= |
检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
(A != B) 为真。 |
> |
检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
(A> B)非真。 |
< |
检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
(A <B)为真。 |
> = |
检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
(A> = B)为假。 |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
(A <= B)为真。 |
逻辑运算符:
逻辑运算符用于对布尔型的数据进行操作。其结果是布尔型数据。
操作符 |
运算 |
范围 |
结果 |
描述 | ||||||||
& |
与 |
|
|
两边都为true 结果为true,否则为false | ||||||||
| |
或 |
|
|
有一边为true 结果为true 只有两边为false,结果为false | ||||||||
^ |
异或 |
|
|
两边相同时 结果为false,否则为true | ||||||||
! |
非 |
|
|
非true即false 非false即true | ||||||||
&& |
短路与 |
|
|
和&不同点: 左边为false时,右边不会进行运算 | ||||||||
|| |
短路或 |
|
|
和|不同点: 左边为true时,右边不会进行运算 |
位运算符:
位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。
运算符 |
运算 |
范例 |
结果 |
描述 | ||||||||
& |
按位与 |
|
|
如果两个二进制位都为1,则该位的结果为1,否则为0。 | ||||||||
| |
按位或 |
|
|
如果二进制位上有一个值为1,则该位的结果为1,否则为0 | ||||||||
~ |
取反 |
|
|
只针对一个操作数进行操作,如果二进制位是0,则取反值为1 如果是1,则取反值为0 | ||||||||
^ |
按位异或 |
|
|
是将参与运算的两个二进制数进行“异或”运算,如果二进制位相同 , 则值为0,否则为1 | ||||||||
<< |
左移 |
00000010 << 2 10010011 << 2 |
00001000 01001100 |
将操作数所有二进制位向左移动一位。运算时, 右边的空位补0,左边移走的部分舍去。 | ||||||||
>> |
右移 |
01100010 >> 2 11100010 >> 2 |
00011000 11111000 |
将操作数所有二进制位向右移动一位。运算时, 左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0. | ||||||||
>>> |
无符号右移 |
01100010 >>> 2 11…11100010 >>> 2 |
00011000 0011…111000 |
将操作数所有二进制位向右移动一位。 运算时,左边的空位补0(不考虑原数正负) |