运算符是一种特殊符号,用以表示数据的运算、赋值和比较。运算符共分为算术运算符、赋值运算符、比较运算符、逻辑运算符、移位运算符。
一、算术运算符
算术运算符的功能是做各种算术运算,其操作数可以是字符型、整型或浮点型数据。Java中的算术运算符又可以分为两种:单目运算符和双目运算符。单目运算符的操作数只有一个,只对唯一的操作数进行处理。双目运算符操作数有两个,运算过程中由两个操作数参与完成。算术运算符见下表:
运算符 | 运算 | 范例 | 结果 | 类型 |
+ | 正号 | +3 | 3 | 单目运算符 |
- | 负号 | b=4;-b; | -4 | 单目运算符 |
+ | 加 | 5 + 5 | 10 | 双目运算符 |
- | 减 | 6 - 4 | 2 | 双目运算符 |
* | 乘 | 2 * 2 | 4 | 双目运算符 |
/ | 除 | 5 / 5 | 1 | 双目运算符 |
% | 取模 | 5 % 3 | 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 | 单目运算符 |
+ | 字符串相加 | "Hel" + "lo" | "Hello" | 双目运算符 |
注意:自增与自减位置的区别。
二、赋值运算符
赋值运算符的作用就是将一个值赋值给另一个变量,最常用的赋值运算符是“=”,赋值运算符的左边必须是一个变量,而不是一个值。赋值运算符见下表:
运算符 | 运算 | 范例 | 结果 |
= | 赋值 | a = 3; b = 2; | a = 3; b = 2; |
+= | 加等于 | a = 3; b = 2; a += b; | a = 5; b = 2; |
-= | 减等于 | a = 3; b = 2; a -= b; | a = 1; b = 2; |
*= | 乘等于 | a = 3; b = 2; a *= b; | a = 6; b = 2; |
/= | 除等于 | a = 3; b = 2; a /= b; | a = 1; b = 2; |
%= | 摸等于 | a = 3; b = 2; a %= b; | a = 1; b = 2; |
三、关系运算符
关系运算符用来比较两个值的关系,是双目运算符,运算结果为boolean类型。关系运算符见下表:
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 4 == 3 | false |
!= | 不等于 | 4 != 3 | true |
< | 小于 | 4 < 3 | false |
> | 大于 | 4 > 3 | true |
<= | 小于等于 | 4 <= 3 | false |
>= | 大于等于 | 4 >= 3 | true |
instanceof | 检查是否为类的对象 | "a" instanceof String | true |
四、逻辑运算符
逻辑运算符用于对boolean类型结果的表达式进行运算,运算结果都是boolean型的。
运算符 | 运算 | 范例 | 结果 |
& | 与 | false & true | false |
| | 或 | false | true | true |
^ | 异或 | true ^ false | true |
! | 非 | ! true | false |
&& | 与 | false && true | false |
|| | 或 | false || true | true |
注意:&与&&的区别在于,如果使用前者连接,那么无论何种情况,&两边的表达式都会参与运算。如果使用后者连接,当&&左边为false时,右边将不参与运算。同理|和||。
五、位运算符
数据在计算机内部是以二进制存储编码的,Java允许对这些二进制进行位运算。位运算符见下表:
位运算符 | 运算 | 范例 | 功能描述 |
& | 与 | x & y | 按位进行与运算 |
| | 或 | x | y | 按位进行或运算 |
^ | 异或 | x ^ y | 按位进行异或运算 |
! | 非 | !x | 按位进行非运算 |
>> | 右移 | x >> y | 将x的二进制编码右移y位,前面的位由符号填充 |
<< | 左移 | x << y | 将x的二进制编码左移y位,低位补0 |
>>> | 无符号右移 | x >>> y | 将x的二进制编码右移y位,前面的位由0填充 |
六、其他运算符
-
三目运算符:一般形式为:<逻辑表达式1> ? <表达式2> : <表达式3>
-
():用于强制类型转换、方法调用。
-
[]:声明、创建数组及访问数据中的特定元素。
-
new:创建对象、数组。
-
.:访问类成员变量,对象成员变量。
七、运算符优先级
运算符 | 优先级 |
() [] | 高 |
++ -- ~ ! | |
* / % | |
+ - | |
>> >>> << | |
> >= < <= | |
== != | |
& | |
^ | |
| | |
&& | |
|| | |
?: | |
= += -= *= /= &= |= ^= <<= >>= >>>= | 低 |