关于包装类比较的一个问题
来源:百度知道 编辑:UC知道 时间:2024/05/23 11:30:27
Integer a = new Integer(13);
Long b=new Long(13);
System.out.println(a.equals(b));
为什么输出的是false,他们的值不是一样的吗?
Long b=new Long(13);
System.out.println(a.equals(b));
为什么输出的是false,他们的值不是一样的吗?
类型不匹配
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
-------------------------------------------------------
以上是Integer类中equals方法的源代码。
从中可以看出,执行equals方法时,首先用了instanceof关键字,判断被比较的对象类型是否也为Integer,然后才进行值的比较。
所以,当被比较的对象为Long类型时,直接就返回false了。
两种类型不一致所以就返回了false,对象的比较并不是单单进行值比较这么简单的。