源本科技 | 码上会

Java 关系运算符

2025/12/25
15
0

关系运算符是 Java 中用于比较两个值的关键工具,广泛应用于 if 条件、循环控制(如 whilefor)等逻辑结构中。它们总是返回一个 boolean 类型的结果(truefalse,是程序实现“决策能力”的基础。


学习目标

  • 掌握 Java 中全部 6 种关系运算符的语法与语义

  • 理解关系运算符在控制流中的核心作用

  • 能够正确处理不同类型数据的比较(整数、浮点数等)

  • 避免常见误区(如字符串比较误用 ==


什么是关系运算符?

关系运算符(Relational Operators)是二元运算符,用于比较两个操作数之间的大小或相等关系。其通用语法为:

operand1 relational_operator operand2

✅ 所有关系运算符均返回 boolean 值,可直接用于条件判断。


Java 中的 6 种关系运算符

运算符

名称

含义

示例(a=5, b=10)

==

等于

判断两值是否相等

a == bfalse

!=

不等于

判断两值是否不相等

a != btrue

>

大于

左操作数是否大于右操作数

a > bfalse

<

小于

左操作数是否小于右操作数

a < btrue

>=

大于或等于

左 ≥ 右

a >= bfalse

<=

小于或等于

左 ≤ 右

a <= btrue


1. 等于运算符(==

检查两个操作数是否值相等

int var1 = 5, var2 = 10, var3 = 5;
System.out.println(var1 == var2); // false
System.out.println(var1 == var3); // true

⚠️ 重要提醒:对于对象(如 String),== 比较的是引用地址,而非内容!

String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1 == s2);     // false(不同对象)
System.out.println(s1.equals(s2)); // true(内容相同)

2. 不等于运算符(!=

== 相反,判断两值是否不相等

int var1 = 5, var2 = 10, var3 = 5;
System.out.println(var1 != var2); // true
System.out.println(var1 != var3); // false

3. 大于运算符(>

判断左操作数是否严格大于右操作数。

int var1 = 30, var2 = 20;
System.out.println(var1 > var2); // true

4. 小于运算符(<

判断左操作数是否严格小于右操作数。

int var1 = 10, var2 = 20;
System.out.println(var1 < var2); // true

5. 大于或等于(>=

判断左操作数是否大于或等于右操作数。

int var1 = 20, var2 = 20, var3 = 10;
System.out.println(var1 >= var2); // true(相等)
System.out.println(var2 >= var3); // true(大于)

6. 小于或等于(<=

判断左操作数是否小于或等于右操作数。

int var1 = 10, var2 = 10, var3 = 9;
System.out.println(var1 <= var2); // true(相等)
System.out.println(var2 <= var3); // false

综合示例

以下程序演示如何使用所有关系运算符对用户输入进行比较:

import java.util.Scanner;

public class RelationalOperators {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        
        System.out.print("请输入第一个整数: ");
        int num1 = scan.nextInt();
        
        System.out.print("请输入第二个整数: ");
        int num2 = scan.nextInt();
        
        System.out.println("\n比较结果:");
        System.out.println(num1 + " > "  + num2 + " 是 " + (num1 > num2));
        System.out.println(num1 + " < "  + num2 + " 是 " + (num1 < num2));
        System.out.println(num1 + " >= " + num2 + " 是 " + (num1 >= num2));
        System.out.println(num1 + " <= " + num2 + " 是 " + (num1 <= num2));
        System.out.println(num1 + " == " + num2 + " 是 " + (num1 == num2));
        System.out.println(num1 + " != " + num2 + " 是 " + (num1 != num2));
        
        scan.close(); // 防止资源泄漏
    }
}
请输入第一个整数: 1
请输入第二个整数: 2

比较结果:
1 > 2 是 false
1 < 2 是 true
1 >= 2 是 false
1 <= 2 是 true
1 == 2 是 false
1 != 2 是 true

使用场景与优势

应用场景

  • 条件判断if (score >= 60) { ... }

  • 循环控制while (count < 10) { ... }

  • 数组边界检查if (index >= 0 && index < array.length)

  • 排序逻辑if (a[i] > a[j]) swap(...)

核心优势

优势

说明

简洁直观

表达式清晰,易于理解

高效执行

底层硬件直接支持比较操作

类型兼容

支持 intdoublechar 等基本类型自动提升比较

控制流基础

是实现程序分支与循环的基石

提升可读性

使逻辑意图一目了然


常见误区

误区

正确做法

== 比较字符串内容

使用 .equals() 方法

忽略浮点数精度问题

避免直接用 == 比较 float/double,应使用误差范围判断

boolean 上使用关系运算符

boolean 只能用 ==!=,不能用 >, <

混淆赋值 = 与等于 ==

if (x = 5) 是赋值(且编译错误),应为 if (x == 5)

🔔 浮点数比较建议

double a = 0.1 + 0.2;
double b = 0.3;
// 错误:System.out.println(a == b); // 可能为 false!
// 正确:
boolean equal = Math.abs(a - b) < 1e-10;

重点总结

  • 关系运算符共 6 种,全部返回 boolean

  • ifwhilefor 等控制结构的判断依据

  • 仅适用于可比较的数据类型(基本类型及其包装类)

  • == 对象比较的是引用,不是内容

  • 复合条件可用逻辑运算符(&&, ||)组合多个关系表达式


思考题

  1. 为什么以下代码输出 false?如何修正?

    Double a = 128.0;
    Double b = 128.0;
    System.out.println(a == b); // false?
  2. 编写一个程序,输入三个整数,判断它们是否能构成三角形(任意两边之和大于第三边)。

  3. 解释为什么 char 类型可以使用关系运算符?并举例说明其用途。