比较运算符
比较运算符一览
比较运算符返回 boolean 类型的结果。
| 运算符 | 名称 | 示例 |
|---|---|---|
| == | 等于 | a == b |
| != | 不等于 | a != b |
| > | 大于 | a > b |
| < | 小于 | a < b |
| >= | 大于等于 | a >= b |
| <= | 小于等于 | a <= b |
java
int a = 10;
int b = 20;
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a > b); // false
System.out.println(a < b); // true
System.out.println(a >= b); // false
System.out.println(a <= b); // true基本类型 vs 引用类型
基本类型比较值
java
int a = 10;
int b = 10;
int c = 20;
System.out.println(a == b); // true(值相等)
System.out.println(a == c); // false引用类型比较引用
java
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 = "Hello"; // 字符串常量池
System.out.println(s1 == s2); // false(不同对象)
System.out.println(s1 == s3); // false(new 创建 vs 常量池)
System.out.println(s1.equals(s2)); // true(比较内容)字符串比较要用 equals,不要用 ==。
在条件判断中
java
int score = 85;
if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
// 多条件判断
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}三个容易错的场景
用 == 比较字符串
java
String s1 = "Hello";
String s2 = "Hello";
// ❌ 错误:比较引用,可能不符合预期
if (s1 == s2) { ... }
// ✅ 正确:使用 equals 比较内容
if (s1.equals(s2)) { ... }浮点数比较
java
double a = 0.1;
double b = 0.2;
// ❌ 错误:浮点数精度问题
if (a + b == 0.3) { ... }
// ✅ 正确:使用误差范围
if (Math.abs((a + b) - 0.3) < 1e-10) { ... }用 = 代替 ==
java
int a = 10;
// ❌ 错误:这是赋值,不是比较(可能编译错误或逻辑错误)
if (a = 5) { ... }
// ✅ 正确
if (a == 5) { ... }链式比较(JDK 14+)
JDK 14+ 支持更直观的链式比较语法:
java
int score = 75;
// 传统写法
if (score >= 60 && score <= 100) {
System.out.println("有效分数");
}
// JDK 14+ 写法
if (60 <= score <= 100) {
System.out.println("有效分数");
}