java基本包装类中的equals方法问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 19:26:41
基本包装类型中的equals方法比较的是什么呀?怎么
Integer i = new Integer (42);
Long 1 = new Long (42);
Double d = new Double (42.0);
i.equals (d)
d.equals (i)
也是正确的呀?
求高手做答

equals比较的对象是否相同,你那几个都是包装器,是类,而且不同,怎么可能一样呢?

equals永远比较的是内容相等和是否是同一对象.i是不会equals d的.
i.equals(l)也是false的. i,和l和d都不是同一对象.

运行下下面的例子你就清楚了.具体去看java编程思想:
public class Equivalence {
public static void main(String[] args) {
Integer i = new Integer(42);
Long l = new Long(42);
Double d = new Double(42.0);
System.out.println(i.equals(l));
System.out.println(i.equals(d));
System.out.println(l.equals(d));
System.out.println(i.equals(45));
}
}

API 文档中说明了 equals需要自己重写!
而且八大基本类型的 equals方法都不一样!

当然正确
你看API文档嘛
Integer Long Doible 都重写了Object的equals()方法
虽然new的对象非配在堆区 他们是比较的内容 不是比较的地址

equals方法检测两个对象是否相等。

例如:

string a=new string("abc");
string b=new string("abc");

那么a.equals(b)的结果是真,因为a和b对象都保存了相同的字符串。