运算符优先级
优先级 |
| 运算符 |
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(不考虑原数正负) |