一、算术运算符
| 运算符 | 数学含义 | 示例 |
| + | 加 | 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 | &=、|=、<<=、>>=、>>>= |
浙公网安备 33010602011771号