运算符,是表示各种不同运算的符号。
运算符按功能分为算术运算符、逻辑运算符、关系运算符、赋值运算符、位运算符等。
1. 算术运算符
算术运算符一般用于对整型数和浮点型数运算。
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(即算术中的求余数) | 7%5 | 2 |
(1)自增运算符
“++”表示加1,可以在变量前面或后面,在变量前面表示变量加1再使用变量,在变量后面表示先使用变量再加1。
x = 1;
①y = x++; 结果:x = 2 y = 1
②y = ++x; 结果:x = 2 y = 2
(2)自减运算符
“--”表示减1,可以在变量前面或后面,在变量前面表示变量减1再使用变量,在变量后面表示先使用变量再减1。
x = 1;
①y = x--; 结果:x = 0 y = 1
②y = --x; 结果:x = 0 y = 0
2. 赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。Java中的赋值运算符及用法具体如下表所示。
运算符 | 运算 | 范例 | 结果 |
= | 赋值 | 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; |
简单赋值运算符“=”,对于基本类型数据是新值赋给变量,对于引用数据类型是将引用值(地址)赋给变量。
除了“=”,其他的都是特殊的赋值运算符,例如y += x等价于y = y + x。
3. 关系运算符
比较运算符用于对两个数值或变量进行比较,比较运算结果是一个布尔值,即true或false。Java中的比较运算符及用法具体如下表所示。
运算符 | 运算 | 范例 | 结果 |
== | 等于 | 4 == 3 | false |
!= | 不等于 | 4 != 3 | true |
< | 小于 | 4 < 3 | false |
> | 大于 | 4 > 3 | true |
<= | 小于或等于 | 4 <= 3 | false |
>= | 大于或等于 | 4 >= 3 | true |
4. 逻辑运算符
逻辑运算符的对象只能是布尔类型,且运算结果也是布尔类型。
逻辑运算符包括非(!)、逻辑与(&)、逻辑或(|)、逻辑异或(^)、短路与(&&)、短路或(||)。
逻辑运算符运算规则如下:
(1)逻辑与(&)和短路与(&&)区别,使用短路与运算x && y时,若x值为false,就可以判断整个表达式为false,不再进行y值的求解;而逻辑与运算x & y时,即使x值为false,也会继续进行y值的求解,最后计算整个表达式的结果。
int x = 0;
int y = 0;
①boolean a = (x > 0) && (y++ > 0); //y的值为0
②boolean b = (x > 0) & (y++ > 0); //y的值为1
(2)逻辑或(|)和短路或(||)区别,使用短路或运算x || y时,若x值为true,就可以判断整个表达式为true,不再进行y值的求解;而逻辑或运算x | y时,即使x值为true,也会继续进行y值的求解,最后计算整个表达式的结果。
int x = 1;
int y = 1;
①boolean a = (x > 0) || (y++ > 0); //y的值为1
②boolean b = (x > 0) |(y++ > 0); //y的值为2
5. 位运算符
位运算符在整数的二进制位上进行的运算,分为位逻辑运算符和移位运算符。
(1)位逻辑运算符
位逻辑运算符共有4个,分别是按位取反(~)、按位与(&)、按位或(|)、按位异或(^)。
位逻辑运算符的运算规则如下:
(2)移位运算符
移位运算符共有3个,分别是左移运算符(<<)、右移运算符(>>)、无符号右移运算符(>>>)。
6. 运算符的优先级
复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,通常把这种顺序称作运算符的优先级。
运算符优先级作为了解,编写代码过程中对于优先级使用圆括号,圆括号的优先级最高。