System.out.println( Integer.valueOf(1).equals(Long.valueOf(1)) ); // false
上面的print语句显示false,分别使用
Integer
和Long
类valueOf()
方法时,原因很清楚两个对象(Integer
和Long
)具有不同的类型,因此它们不相等。但是,如果将整数值1和长值1l传递给字符串类的
valueOf()
方法,我的print语句将输出trueSystem.out.println( String.valueOf(1).equals(String.valueOf(1l)) ); // true
我无法理解它们之间的确切区别是什么。
我需要对此进行解释。
最佳答案
答案是关于Integer#equals
的实现:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
您不必输入
if
语句,因为它们的类型不同。在第二个版本中,您得到
true
,因为.. 1在字符串表示形式上是相同的。关于java - String类和其他包装器类的valueOf()方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20309942/