【发布时间】:2014-05-06 20:52:53
【问题描述】:
当我比较两个具有相同值的双基本类型时,为什么 equal 方法是错误的?然而整数不是
public class EqualMethod {
public static void main(String[] args) {
Double value1 = 6.2;
Double value2 = 6.2;
System.out.println(value1 == value2);
Integer number1 = 2;
Integer number2 = 2;
System.out.println(number1 == number2);
}
}
【问题讨论】:
-
equals()用于比较对象,==用于原始数据类型。 -
顺便说一句,尝试使用
Double value1 = Double.valueOf(6.2); Double value2 = Double.valueOf(6.2);,因为不需要分配两个Double对象来表示相同的值。请参阅javadoc。 -
这些不是原语
-
@2rs2ts 他没有使用
new Double(6.2)(它确实分配了新对象)所以我怀疑valueOf有什么优势;只是杂乱无章 -
是的,会的。 6.2 远不是一个经常被要求的值。而
Double d = 6.2被编译为Double d = Double.valueOf(6.2),而不是Double d = new Double(6.2)。因此,您的代码是编写与 OP 完全相同的内容的更冗长的方式。还要注意 valueOf() 的实际实现是...return new Double(d)
标签: java equals autoboxing