一、算术运算符
运算符 | 数学含义 | 示例 |
+ | 加 | a+b |
- | 减 | a-b,-b |
* | 乘 | a*b |
/ | 除 | a/b |
% | 取模 | a%b |
++ | 自增 | a++,++a |
-- | 自减 | a--,--a |
二、比较运算符
运算符 | 数学含义 | 示例 |
> | 大于 | a>b |
< | 小于 | a<b |
== | 等于 | a==b |
>= | 大于等于 | a>=b |
<= | 小于等于 | a<=b |
比较运算表达式的结果是布尔值(true或false)
三、逻辑运算符
运算符 | 数学含义 | 示例 |
! | 非 | !a |
&& | 与 | a&&b |
|| | 或 | a||b |
四、位运算符
运算符 | 含义 | 示例 |
~ | 按位非(NOT) | ~a |
& | 按位与(AND) | a&b |
| | 按位或(OR) | a|b |
^ | 按位异或(XOR) | a^b |
>> | 右移 | a>>b |
>>> | 无符右移 | a>>>b |
<< | 左移 | a<<b |
1、按位非(NOT)
语法格式:~value1
按位非也叫做补,一元运算符“~”是对其运算符的每一位取反。例如42的二进制代码为00101010,则~00101010=11010101.
2、按位与(AND)
语法格式:value1&value2
按位与运算符“&”,如果两个运算符都是1,则结果为1,其他结果均为0。例如 00101010&00001111=00001010
3、按位或(OR)
语法格式:value1|value2
按位或运算符“|”,任何一个运算符数为1,则结果为1.例如 00101010|00001111=00101111
4、按位异或(XOR)
语法格式:value1^value2
按位异或运算符“^”,只有在两个比较的位不同时其结果是1,否则结果为0
5、右移
语法格式:value>>num
num指定要位移value移动的位数,即右移运算符>>使指定值的所有位都右移num位。当值中的某些位被移出时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)由原来最高位的数字补充。例如 11111000>>1=11111100
6、无符右移
语法格式:value>>>num
num指定要位移value移动的位数,即无符号右移运算符>>>使指定值的所有位都右移num位。当值中的某些位被移出时,这些位的值将丢弃。右移时,被移走的最高位(最左边的位)由0补充。例如 11111000>>>1=01111100
7、左移
语法格式:value<<num
num指定要位移值value移动的位数,即左移运算符<<指定值的所有位都左移num位。每左移一位,高阶位都被移出(并且丢弃),并用0填充右边。这意味着当左移的运算数是int类型时,每移动1位它的第63位就要被移出并且丢弃。例如 11111000<<1=11110000
五、赋值运算符
运算符 | 示例 |
+= | a+=b |
-= | a-=b |
*= | a*=b |
/= | a/=b |
%= | a%=b |
六、条件运算符
条件运算符是三元运算符,语法格式如下
<表达式>?e1:e2
其中,表达式的值为布尔类型,若表达式的值为真,则返回e1的值,若表达式的值为假,则返回e2的值。
七、运算符优先级
优先次序 | 运算符 |
1 | .、[]、() |
2 | ++、--、!、~、instanceof |
3 | new、(type) |
4 | *、/、% |
5 | +、- |
6 | >>、>>>、<< |
7 | >、<、>=、<= |
8 | ==、!= |
9 | & |
10 | ^ |
11 | | |
12 | && |
13 | || |
14 | ?: |
15 | =、+=、-=、*=、/=、%=、^= |
16 | &=、|=、<<=、>>=、>>>= |