用 == 运算符即可比较基本类型值或基本类型与自动拆箱的包装类值;浮点数因精度问题需用 math.abs(a - b)
直接用
==运算符。Java 中的八种基本数据类型(
byte、short、int、long、float、double、char、boolean)都支持==,它比较的是变量实际存储的值,不是地址,也不涉及对象或引用。什么时候用 == 就够了
只要两个操作数都是基本类型,或者其中一个是基本类型、另一个是能自动拆箱的包装类(比如 `int` 和 `Integer`),`==` 就能安全、准确地判断值是否相等。
- 两个 int 比较:`int a = 5; int b = 5; System.out.println(a == b); // true`
- int 和 Integer 比较:`int a = 100; Integer b = 100; System.out.println(a == b); // true(b 自动拆箱为 int)`
- boolean 比较:`boolean x = true; boolean y = false; System.out.println(x == y); // false`
- 跨类型数值比较也行:`int i = 300; long l = 300L; float f = 300f; System.out.println(i == l && i == f); // true`
注意浮点数的特殊性
`float` 和 `double` 是二进制浮点数,存在精度误差。用 `==` 比较计算结果时可能不符合预期:
- `0.1 + 0.2 == 0.3` 的结果是 false
- 需要判断“近似相等”时,应改用差值绝对值比较:`(Math.abs(a - b)
- 对精度要求高的场景(如金融计算),推荐用 `BigDecimal` 配合 `compareTo()` 或 `equals()`
别和 equals() 混用
`equals()` 是 `Object` 的方法,只适用于**对象**。基本类型不能调用 `equals()` —— 编译会报错。
- `int a = 5; a.equals(5); // ❌ 编译错误`
- `Integer a = 5; a.equals(5); // ✅ 可以,但本质还是比值(内部拆箱)`
- 不要为了“统一写法”而在基本类型上强行套用 `equals()`
小结:记住这个原则
基本类型之间、或基本类型与对应包装类之间判等,首选 `==`;它简洁、高效、语义明确。唯一需要绕开它的场景,是浮点数精度敏感的比较。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南












