关于包装类比较的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 11:30:27
Integer a = new Integer(13);

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,对象的比较并不是单单进行值比较这么简单的。