Java 运算符
运算符是加工数据的符号:把两个数相加、比较大小、判断真假。Java 运算符分算术、关系、位、逻辑、赋值、三元等几大类。
算术运算符(含自增自减)
+ - * / % 做四则运算与取余,整数相除直接取整;++、-- 写在变量前先加减后用,写在变量后先用后加减:
public class ArithDemo {
public static void main(String[] args) {
int a = 7, b = 2;
System.out.println(a + b); // 输出:9
System.out.println(a - b); // 输出:5
System.out.println(a * b); // 输出:14
System.out.println(a / b); // 输出:3(取整)
System.out.println(a % b); // 输出:1
int x = 5;
System.out.println(x++); // 输出:5(先用后加)
System.out.println(++x); // 输出:7(先加后用)
}
}
关系运算符与 instanceof
> < >= <= == != 比较大小,instanceof 判断对象类型,结果都是布尔值,以下片段需放进 main 方法中运行:
int age = 18;
System.out.println(age >= 18); // 输出:true
System.out.println(age == 20); // 输出:false
String s = "hello";
System.out.println(s instanceof String); // 输出:true
位运算符
按二进制逐位计算:& 与、| 或、^ 异或、~ 取反、<< >> 移位,以下片段需放进 main 方法中运行:
int a = 6, b = 3; // a=110,b=011
System.out.println(a & b); // 输出:2(010)
System.out.println(a | b); // 输出:7(111)
System.out.println(a << 1); // 输出:12(左移 1 位相当于乘 2)
逻辑运算符与短路
&& 与、|| 或、! 非。&& 左边为 false 或 || 左边为 true 时,右边不再执行,称为短路:
// 片段需放进 main 方法中运行
int n = 5;
System.out.println(n > 0 && n < 10); // 输出:true
boolean m = false && (10 / 0 > 1); // 短路使右边不执行,不报错
System.out.println(m); // 输出:false
赋值与三元运算符
= 赋值,+= 等复合赋值先运算再赋值;三元 条件 ? 值1 : 值2 按条件二选一,以下片段需放进 main 方法中运行:
int x = 10;
x += 5; // 等价于 x = x + 5
String s = x >= 15 ? "达标" : "未达标"; // 三元选择
System.out.println(x); // 输出:15
System.out.println(s); // 输出:达标
运算符优先级(从高到低)
| 优先级 | 运算符 |
|---|---|
| 括号 | ( ) |
| 一元 | ++ -- ! ~ |
| 乘除模 | * / % |
| 加减 | + - |
| 移位 | << >> |
| 关系 | < > <= >= instanceof |
| 相等 | == != |
| 位与/异或/或 | & ^ | |
| 短路与/或 | && || |
| 三元 | ?: |
| 赋值 | = += -= 等 |
记不住优先级没关系,复杂表达式多用括号,让意图一目了然。
常见陷阱
- 除法取整:
7 / 2得 3,想要小数要写成7 / 2.0。 - 浮点误差:
0.1 + 0.2不等于 0.3,比较小数需设定误差范围。 - 短路副作用:别把「必须执行」的代码放在
&&或||的右边。
运算符是表达式的积木:算术算数、关系比较、逻辑判断、三元择一;掌握优先级规律与三个常见陷阱,写表达式就能少踩坑。