Java中判断数值相等需分情况:基本类型用==,包装类必须用equals(),浮点数需用Math.abs(a-b)<epsilon判断。

Java 中判断两个数值是否相等,**不能直接用 == 比较所有情况**,关键要看数据类型:基本类型用 ==,引用类型(如 Integer、Double)必须用 .equals(),否则可能出错。
基本类型用 == 安全可靠
对于 int、double、char 等基本类型,== 直接比较值,完全正确:
int a = 5; int b = 5; System.out.println(a == b); // truedouble x = 3.14; double y = 3.14; System.out.println(x == y); // true
包装类必须用 equals(),慎用 ==
Integer、Double 等是对象,== 比较的是引用(内存地址),不是值:
Integer i1 = 100; Integer i2 = 100; System.out.println(i1 == i2); // true(小整数缓存)Integer i3 = 200; Integer i4 = 200; System.out.println(i3 == i4); // false(超出缓存范围)- 统一写法:
i3.equals(i4)→ 返回 true,安全可靠
浮点数相等需特殊处理
double 和 float 存在精度误差,直接 == 易误判:
立即学习“Java免费学习笔记(深入)”;
-
0.1 + 0.2 == 0.3结果是 false - 应改用「误差范围」判断:
Math.abs(a - b) - 或使用
Double.compare(a, b) == 0(更严谨)
字符串和 null 安全判断
虽然不是数值,但常混用:String 不能用 == 判等,且要防 null:
- 错误:
str == "abc"或str.equals("abc")(str 为 null 时抛异常) - 推荐:
"abc".equals(str)—— 字面量调用,天然防空


















