文章目录
一、简介
在 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 | , |
运算符的优先级不需要全部记住,你只要知道当你想要改变运算符执行的顺序时, 小括号 的优先级是最高的即可。