基本类型用==比较值,浮点数需用误差范围判断。int、char、boolean等8种基本类型在栈中存数值,==直接比数值;float/double因精度问题,应使用math.abs(x - y)
直接用 == 运算符即可。
基本类型必须用 == 比较值
Java 的 8 种基本类型(byte、short、int、long、float、double、char、boolean)在栈中直接存储数值本身。== 对它们来说,语义就是“数值是否完全相等”,无需额外处理。
int a = 5; int b = 5;→a == b返回truechar c1 = 'A'; char c2 = 65;→c1 == c2也返回true(因为 'A' 的 Unicode 值是 65)boolean flag1 = true; boolean flag2 = true;→flag1 == flag2同样成立浮点数(float/double)要特别小心
由于二进制无法精确表示某些十进制小数(如 0.1),直接用 == 判断浮点数极易出错。
- ❌ 错误示例:
0.1f == 0.1结果为false(类型不同 + 精度丢失)- ❌ 危险写法:
double x = 0.3; double y = 0.1 + 0.2;→x == y很可能为false- ✅ 正确做法:用误差范围(epsilon)判断近似相等:
Math.abs(x - y)别用 equals() 比基本类型
基本类型不是对象,没有 equals() 方法。如果把基本类型装箱成包装类(如
Integer)再调用 equals(),不仅多余,还可能因缓存机制引入意外行为(比如Integer.valueOf(127) == Integer.valueOf(127)为 true,但Integer.valueOf(128) == Integer.valueOf(128)为 false)。
- 直接比较就用
==,清晰、高效、无歧义- 包装类之间的比较才需考虑 equals() 和缓存细节
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南












