c而
d在技术上两个不同的对象和
==运营商只比较引用。
c.equals(d)
更好,因为它比较值而不是引用。但是仍然不理想。直接比较浮点值应始终将一些误差(ε)考虑在内(
Math.abs(c - d) < epsilon)。
注意:
Integer c = 1;Integer d = 1;
这里的比较会产生
true,但是比较复杂(
Integer内部缓存,在JavaDoc中有
Integer.valueOf()描述):
此方法将始终缓存-128至127(包括)范围内的值,并且可能缓存该范围之外的其他值。
为什么
valueOf()呢 由于此方法隐式用于实现自动装箱:
Integer c = Integer.valueOf(1);Integer d = Integer.valueOf(1);



