Skip to content

5.3 关系运算符

关系运算符的概念

关系运算符用于比较两个值之间的关系,返回一个布尔值(true 或 false)。Java 提供了多种关系运算符,用于比较数值、字符和对象的关系。

关系运算符列表

运算符名称描述示例结果
>大于左侧值大于右侧值5 > 3true
<小于左侧值小于右侧值5 < 3false
>=大于等于左侧值大于或等于右侧值5 >= 5true
<=小于等于左侧值小于或等于右侧值5 <= 3false
==等于左侧值等于右侧值5 == 5true
!=不等于左侧值不等于右侧值5 != 3true

关系运算符的使用

比较数值

java
public class RelationalOperatorsExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;
        int c = 10;
        
        // 大于
        System.out.println("a > b: " + (a > b)); // 输出 true
        
        // 小于
        System.out.println("a < b: " + (a < b)); // 输出 false
        
        // 大于等于
        System.out.println("a >= c: " + (a >= c)); // 输出 true
        
        // 小于等于
        System.out.println("a <= b: " + (a <= b)); // 输出 false
        
        // 等于
        System.out.println("a == c: " + (a == c)); // 输出 true
        
        // 不等于
        System.out.println("a != b: " + (a != b)); // 输出 true
    }
}

比较字符

字符的比较是基于它们的 ASCII 值。

java
public class CharComparisonExample {
    public static void main(String[] args) {
        char ch1 = 'A'; // ASCII 值为 65
        char ch2 = 'B'; // ASCII 值为 66
        char ch3 = 'A'; // ASCII 值为 65
        
        System.out.println("ch1 > ch2: " + (ch1 > ch2)); // 输出 false
        System.out.println("ch1 < ch2: " + (ch1 < ch2)); // 输出 true
        System.out.println("ch1 == ch3: " + (ch1 == ch3)); // 输出 true
        System.out.println("ch1 != ch2: " + (ch1 != ch2)); // 输出 true
    }
}

比较浮点数

浮点数的比较需要注意精度问题。

java
public class FloatComparisonExample {
    public static void main(String[] args) {
        double d1 = 0.1 + 0.2;
        double d2 = 0.3;
        
        System.out.println("d1: " + d1); // 输出 0.30000000000000004
        System.out.println("d2: " + d2); // 输出 0.3
        System.out.println("d1 == d2: " + (d1 == d2)); // 输出 false
        
        // 正确的比较方式
        double epsilon = 1e-10;
        System.out.println("Math.abs(d1 - d2) < epsilon: " + (Math.abs(d1 - d2) < epsilon)); // 输出 true
    }
}

关系运算符的优先级

关系运算符的优先级高于赋值运算符,但低于算术运算符。

示例

java
public class RelationalPrecedenceExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;
        int c = 3;
        
        // 先计算算术运算,再进行关系比较
        boolean result1 = a + b > c * 2; // 先计算 a + b 和 c * 2,再比较
        System.out.println("a + b > c * 2: " + result1); // 输出 true
        
        // 使用括号改变优先级
        boolean result2 = (a + b) > (c * 2); // 与上面等效
        System.out.println("(a + b) > (c * 2): " + result2); // 输出 true
    }
}

关系运算符的应用

1. 条件判断

java
int age = 18;
if (age >= 18) {
    System.out.println("You are an adult.");
} else {
    System.out.println("You are a minor.");
}

2. 排序

java
int a = 10;
int b = 5;
if (a > b) {
    System.out.println("a is greater than b");
} else if (a < b) {
    System.out.println("a is less than b");
} else {
    System.out.println("a is equal to b");
}

3. 范围检查

java
int score = 85;
if (score >= 90) {
    System.out.println("Grade: A");
} else if (score >= 80) {
    System.out.println("Grade: B");
} else if (score >= 70) {
    System.out.println("Grade: C");
} else {
    System.out.println("Grade: D");
}

示例:关系运算符的使用

java
public class RelationalApplication {
    public static void main(String[] args) {
        // 比较整数
        int num1 = 100;
        int num2 = 200;
        System.out.println("num1 > num2: " + (num1 > num2));
        System.out.println("num1 < num2: " + (num1 < num2));
        System.out.println("num1 == num2: " + (num1 == num2));
        
        // 比较浮点数
        double price1 = 9.99;
        double price2 = 19.99;
        System.out.println("price1 >= price2: " + (price1 >= price2));
        System.out.println("price1 <= price2: " + (price1 <= price2));
        
        // 比较字符
        char grade1 = 'A';
        char grade2 = 'B';
        System.out.println("grade1 == grade2: " + (grade1 == grade2));
        System.out.println("grade1 != grade2: " + (grade1 != grade2));
        
        // 范围检查
        int age = 25;
        if (age >= 18 && age < 65) {
            System.out.println("You are of working age.");
        } else if (age < 18) {
            System.out.println("You are a minor.");
        } else {
            System.out.println("You are a senior citizen.");
        }
    }
}

常见问题

1. 等于运算符与赋值运算符的混淆

症状:使用 = 而不是 == 来比较值

解决方案:记住 == 是等于运算符,= 是赋值运算符

2. 浮点数比较的精度问题

症状0.1 + 0.2 == 0.3 返回 false

解决方案:使用 Math.abs() 来比较浮点数的差值是否小于一个很小的数

3. 对象比较

症状:使用 == 比较对象,结果不符合预期

解决方案:对于对象,使用 equals() 方法来比较内容,而不是 == 运算符

总结

关系运算符是 Java 中用于比较两个值之间关系的工具,包括:

  • 大于 >
  • 小于 <
  • 大于等于 >=
  • 小于等于 <=
  • 等于 ==
  • 不等于 !=

关系运算符返回一个布尔值(true 或 false),常用于条件判断、排序和范围检查等场景。在使用关系运算符时,需要注意浮点数的精度问题和对象的比较方法。

© 2026 编程马·菜鸟教程 版权所有