文章目录
一、简介
在 Java 中,运算符是用来对数据进行操作和处理的符号,这些符号能使得 Java 程序进行各种数学计算、条件判断和数据处理,从而实现丰富的功能和逻辑。
二、算术运算符
运算符 | 含义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
java
public class Main {
public static void main(String[] args) {
int a = 15;
int b = 4;
// 算法运算符
System.out.println("加法:" + (a + b));
System.out.println("减法:" + (a - b));
System.out.println("乘法:" + (a * b));
System.out.println("除法:" + (a / b));
System.out.println("取余:" + (a % b));
}
}
运行结果:
java
加法:19
减法:11
乘法:60
除法:3
取余:3
三、自增自减运算符
- 自增运算符 ++:
- 前缀自增( ++a ):先将变量的值增加 1,然后再使用变量的值进行其他操作。
- 后缀自增( a++ ):先使用变量的值进行其他操作,然后再将变量的值增加 1。
- 自减运算符 --:
- 前缀自减( --a ):先将变量的值减少 1,然后再使用变量的值进行其他操作。
- 后缀自减( a-- ):先使用变量的值进行其他操作,然后再将变量的值减少 1。
java
public class Main {
public static void main(String[] args) {
int a = 10;
// 自增自减运算符
System.out.println("后缀自增:" + a++);
System.out.println("前缀自增:" + ++a);
System.out.println("后缀自减:" + a--);
System.out.println("前缀自减:" + --a);
}
}
运行结果:
java
后置自增:10
前置自增:12
后置自减:12
前置自减:10
四、关系运算符
运算符 | 含义 |
---|---|
> | 判断左边的值是否大于右边的值 |
< | 判断左边的值是否小于右边的值 |
>= | 判断左边的值是否大于等于右边的值 |
<= | 判断左边的值是否小于等于右边的值 |
== | 判断左右两边的值是否相等 |
!= | 判断左右两边的值两个值是否不相等 |
java
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 20;
// 关系运算符
System.out.println("大于:" + (a > b));
System.out.println("小于:" + (a < b));
System.out.println("大于等于:" + (a >= b));
System.out.println("小于等于:" + (a <= b));
System.out.println("等等于:" + (a == b));
System.out.println("不等于:" + (a != b));
}
}
运行结果:
java
大于:false
小于:true
大于等于:false
小于等于:true
等等于:false
不等于:true
五、逻辑运算符
运算符 | 含义 |
---|---|
&& | 逻辑与,都为 true 时,结果才为 true,否则为 false |
|| | 逻辑或,有一个为 true,结果就为 true,两个都为 false 时,结果才为 false。 |
^ | 逻辑异或,相同为 false,不同为 true |
! | 逻辑非,对结果去反,true 变 false,false 变 true |
java
public class Main {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
// 逻辑运算符
System.out.println("逻辑与:" + (a && b));
System.out.println("逻辑或:" + (a || b));
System.out.println("逻辑异或:" + (a ^ b));
System.out.println("逻辑非:" + (!a));
}
}
运行结果:
java
逻辑与:false
逻辑或:true
逻辑异或:true
逻辑非:false
六、位运算符
运算符 | 含义 |
---|---|
& | 按位于,相对应的二进制都为 1,则结果位为 1,否则为 0 |
| | 按位或,相对应的二进制只要有一个为 1,结果位就为 1,都为 0,结果位,才为 0 |
^ | 按位异或,相对应的二进制位不同时,结果位为 1,相同时为 0。 |
〜 | 按位取反,将操作数的二进制位取反,0 变 1,1 变 0。 |
<< | 左移,将操作数的二进制位向左移动指定的位数,右边补 0 (左移一位相当于乘二) |
>> | 右移,将操作数的二进制位向右移动指定的位数,如果操作数为正数,左边补 0;如果为负数,左边补 1 (右移一位相当于除二) |
>>> | 无符号右移,无论操作数的正负,左边都补 0 (右移一位相当于除二) |
java
public class Main {
public static void main(String[] args) {
int a = 5; // 二进制:0000 0101
int b = 4; // 二进制:0000 0100
// 位运算符
System.out.println("按位与:" + (a & b)); // 二进制:0000 0100 = 4
System.out.println("按位或:" + (a | b)); // 二进制:0000 0101 = 5
System.out.println("按位异或:" + (a ^ b)); // 二进制:0000 0001 = 1
System.out.println("按位取反:" + (~a)); // 二进制:1000 0110 = -6
System.out.println("左移:" + (a << 2)); // 二进制:0001 0100 = 20
System.out.println("右移:" + (a >> 1)); // 二进制:0000 0010 = 2
System.out.println("无符号右移:" + (a >>> 1)); // 二进制:0000 0010 = 2
}
}
运行结果:
java
按位与:4
按位或:5
按位异或:1
按位取反:-6
左移:20
右移:2
无符号右移:2
六、赋值运算符
运算符 | 含义 |
---|---|
= | 赋值运算符,将等号右边的值赋给左边 |
+= | 将右侧的值与左侧变量的值相加,并将结果赋给左侧变量 |
-= | 将右侧的值从左侧变量的值中减去,并将结果赋给左侧变量 |
*= | 将左侧变量的值乘以右侧的值,并将结果赋给左侧变量 |
/= | 将左侧变量的值除以右侧的值,并将结果赋给左侧变量 |
%= | 将左侧变量的值与右侧的值进行取余运算,并将结果赋给左侧变量 |
&= | 将左侧变量的值与右侧的值进行按位与运算,并将结果赋给左侧变量 |
|= | 将左侧变量的值与右侧的值进行按位或运算,并将结果赋给左侧变量 |
^= | 将左侧变量的值与右侧的值进行按位异或运算,并将结果赋给左侧变量 |
<<= | 将左侧变量的值左移指定的位数,并将结果赋给左侧变量 |
>>= | 将左侧变量的值右移指定的位数,并将结果赋给左侧变量 |
>>>= | 将左侧变量的值无符号右移指定的位数,并将结果赋给左侧变量 |
java
public class Main {
public static void main(String[] args) {
int num = 10;
// 赋值运算符
num += 5;
System.out.println("+=:" + num);
num -= 3;
System.out.println("-=:" + num);
num *= 2;
System.out.println("*=:" + num);
num /= 4;
System.out.println("/=:" + num);
num %= 5;
System.out.println("%=:" + num);
}
}
运行结果:
java
+=:15
-=:12
*=:24
/=:6
%=:1
七、条件运算符
在 Java 中,条件运算符也称为三元运算符,作用是根据条件表达式的值选择两个表达式中的一个,类似于 if...else。
java
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 20;
// 三目运算符
System.out.println("最大值:" + ((a > b) ? a : b)); // a 不大于 b,所以返回 b 的值
}
}
运行结果:
java
最大值:20
八、字符串连接符
在 Java 中,加号(+)也可以用作字符串连接符,作用是连接两个或多个字符串。
java
public class Main {
public static void main(String[] args) {
String a = "Hello ";
String b = "World";
// 字符串连接符
System.out.println("字符串连接符:" + (a + b) + " (" + 2024 + ")");
}
}
运行结果:
java
连接符:Hello World (2024)
九、运算符优先级
当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。
优先级 | 运算符 |
---|---|
1 | ( ) [ ] . |
2 | ! ~ ++ -- |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < <= > >= instanceof |
7 | == != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | | |
13 | ? : |
14 | = += -= *= /= %= &= |
15 | , |
运算符的优先级不需要全部记住,你只要知道当你想要改变运算符执行的顺序时, 小括号 的优先级是最高的即可。