运算符,是表示各种不同运算的符号。
运算符按功能分为算术运算符、逻辑运算符、关系运算符、赋值运算符、位运算符等。
算术运算符一般用于对整型数和浮点型数运算。
运算符 |
运算 |
范例 |
结果 |
+ |
正号 |
+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
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。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。
比较运算符用于对两个数值或变量进行比较,比较运算结果是一个布尔值,即true或false。Java中的比较运算符及用法具体如下表所示。
运算符 |
运算 |
范例 |
结果 |
== |
等于 |
4 == 3 |
false |
!= |
不等于 |
4 != 3 |
true |
< |
小于 |
4 < 3 |
false |
> |
大于 |
4 > 3 |
true |
<= |
小于或等于 |
4 <= 3 |
false |
>= |
大于或等于 |
4 >= 3 |
true |
逻辑运算符的对象只能是布尔类型,且运算结果也是布尔类型。
逻辑运算符包括非(!)、逻辑与(&)、逻辑或(|)、逻辑异或(^)、短路与(&&)、短路或(||)。
逻辑运算符运算规则如下:
(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
位运算符在整数的二进制位上进行的运算,分为位逻辑运算符和移位运算符。
(1)位逻辑运算符
位逻辑运算符共有4个,分别是按位取反(~)、按位与(&)、按位或(|)、按位异或(^)。
位逻辑运算符的运算规则如下:
(2)移位运算符
移位运算符共有3个,分别是左移运算符(<<)、右移运算符(>>)、无符号右移运算符(>>>)。
复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,通常把这种顺序称作运算符的优先级。
运算符优先级作为了解,编写代码过程中对于优先级使用圆括号,圆括号的优先级最高。