- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算符
- 运算符的优先级
常见的运算符有算术、赋值、比较和逻辑运算符。
算术运算符| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| + | 正号 | +3 | 3 |
| - | 负号 | b=4,-b | -4 |
| + | 加 | 5+5 | 10 |
| - | 减 | 6-4 | 2 |
| * | 乘 | 3*4 | 12 |
| / | 除 | 5/5 | 1 |
| % | 取模(取余) | 7%5 | 2 |
| ++ | 自增(前),先运算后取值 | a=2,b=++a | a=3,b=3 |
| ++ | 自增(后),先取值后运算 | a=2,b=a++ | a=3,b=2 |
| - - | 自减(前),先运算后取值 | a=2,b=- -a | a=1,b=1 |
| - - | 自减(后),先取值后运算 | a=2,b=a- - | a=1,b=2 |
| + | 字符串连接 | “He”+“llo” | “Hello” |
赋值运算符注意:“%”中结果的符号与被模数的符号相同。(m=a%b,m的符号与a的符号相同)
- 当“%”两侧的数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
- 支持连续赋值(a=b=5;)
| 运算符 | 运算 | 等同于 |
|---|---|---|
| = | a=2 | 将2赋给a |
| += | a+=2 | a=a+2 |
| -= | a-=2 | a=a-2 |
| *= | a*=2 | a=a*2 |
| /= | a/=2 | a=a/2 |
| %= | a%=2 | a=a%2 |
比较运算符注意:“+=、-=、*=、/=、%=”不会改变变量本身的数据类型。
- 比较运算符的结果都是boolean型,也就是要么是true,要么是false。
- 比较运算符中的“==”不能误写成“=”。
| 运算符 | 运算 | 范例 | 结果 |
|---|---|---|---|
| == | 相等于 | 4==3 | false |
| != | 不等于 | 4!=3 | true |
| < | 小于 | 4<3 | false |
| > | 大于 | 4>3 | true |
| <= | 小于等于 | 4<=3 | false |
| >= | 大于等于 | 4>=3 | true |
| instanceof | 检查是否是类的对象 | “Hello”instanceof String | true |
- &—逻辑与:a、b中有一个false,结果为false。
- |—逻辑或:a、b中有一个是true,结果为true。
- !—逻辑非:取反,a为true,则!a为false。
- &&—短路与:a、b中有一个为false,结果为false。(a&&b中,若a为false时,则不执行b,自动判定b为true。)
- ||—短路或:a、b中有一个是true,结果为true。(a||b中,若a为true,则不执行b,自动判定b也为true。)
- ^—逻辑异或:a、b相同时为true,不相同时为false。
| a | b | a&b | a&&b | a|b | a||b | !a | a^b |
|---|---|---|---|---|---|---|---|
| true | true | true | true | true | true | false | false |
| true | false | false | false | true | true | false | true |
| false | ture | false | false | true | true | true | true |
| false | false | false | false | false | false | true | false |
- 位运算操作的都是整形的数据。
| 运算符 | 运算 | 作用 | 范例 |
|---|---|---|---|
| << | 左移 | 将数字对应二进制的数字向左移位,被移除的高位丢弃,空缺位补零(在一定范围内,每向左移一位数值翻倍)。 | 2<<3–>3*2 *2=12 |
| >> | 右移 | 将数字对应二进制的数字向右移位,被移位的二进制最高位是0,右移后,空缺位补0,最高位是1,空缺位补1(在一定范围内,每向右移一位数值减半)。 | 3>>1–>3/2=1 |
| >>> | 无符号右移 | 将数字对应二进制的数字向右移位,被移位的二进制数最高位无论是0或者是1,空缺位都用0补。 | 3>>>1–>3/2=1 |
| & | 与运算 | 二进制位进行&运算,对应位只有1&1时结果位1,否则是0。 | 6&3=2 |
| | | 或运算 | 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1。 | 6 |
| ^ | 异或运算 | 二进制位进行^运算,对应位相等时,结果是0,对应位不相同时,结果是1。 | 6^3=5 |
| ~ | 取反运算 | 正数取反,各二进制码按补码各位取反。负数取反,各二进制码按补码各位取反。 | ~6=-7 |
注意:位运算符直接对整数的二进制进行运算。
补充:若m ^ n=k,则m=k ^ n=(m ^ n) ^ n
- 使用位运算符将两个变量的值进行交换:
int num1 = 10,num2 = 20 num1 = num1 ^ num2; num2 = num1 ^ num2;//num2=num1^num2=(num1^num2)^num2=num1 num1 = num1 ^ num2;//num1=(num1^num2)^num1=num2三元运算符
(条件表达式)?表达式1:表达式2;
运算符的优先级说明:
- 条件表达式的结果位boolean类型。
- 如果表达式真或假,决定执行表达式1,还是表达式2。(如果表达式为true,则执行表达式1,如果表达式为false,则执行表达式2)
- 凡是可以用三元运算符的地方,都可以改写为if-else结构,但可以用if-else结构的不一定可以用三元运算符。
- 如果程序即可以使用三元运算符,又可以使用if-else结构,那么优先使用三元运算符。(三元运算符更简洁,效率更高)
- 小技巧:
有要先加的用小括号“()”。



