Skip to content

比较运算符

比较运算符一览

比较运算符返回 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("有效分数");
}

基于 VitePress 构建