Java关系运算符有6个:==、!=、>、<、>=、<=,结果为boolean类型,用于条件判断,不改变变量值;基本类型直接比较数值或Unicode值,引用类型用==比较地址。

关系运算符有哪些
Java 支持以下 6 个关系运算符:
- ==:相等(值相等,基本类型比数值,引用类型比地址)
- !=:不相等
- >:大于
- <:小于
- >=:大于等于
- <=:小于等于
基本类型变量直接比较很直观
对 `int`、`long`、`char`、`double` 等基本类型,关系运算符直接按数值大小或 Unicode 编码值比较:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
int a = 10, b = 20; System.out.println(a > b); // false System.out.println(a <= b); // true System.out.println(a == 10); // true(可与字面量比较) char c1 = 'A', c2 = 'B'; System.out.println(c1 < c2); // true('A' 的 Unicode 是 65,'B' 是 66)
引用类型用 == 要特别小心
对 `String`、`Integer`、自定义对象等引用类型,== 比较的是内存地址,不是内容:
- `String s1 = "hello"; String s2 = "hello";` → `s1 == s2` 通常为 true(字符串常量池优化)
- `String s1 = new String("hello"); String s2 = new String("hello");` → `s1 == s2` 一定为 false
- 正确比内容应使用 `.equals()`:`s1.equals(s2)`
- 对于 `Integer` 等包装类,-128 到 127 范围内可能因缓存导致 `==` 偶尔为 true,但不可依赖
实际使用建议
- 数值比较优先用 `>`, `=`, `
- 避免用 `==` 比较两个 `String` 或包装类对象的“逻辑相等”
- 需要判断对象内容是否一致时,统一用 `.equals()`(注意空指针,可写成 `"abc".equals(str)` 更安全)
- 比较 `Long`、`Double` 等包装类型大小时,推荐先转基本类型再比:`x.longValue() > y.longValue()`

















