初学者问个有关 equals的问题
1.
public class EqualesMethod {
public static void main(String[] args) {
Integer i1 = new Integer (1);
Integer i2 = new Integer (1);
System.out.println(i1.equals(i2));
}
}
2.
class Value
{
int i;
}
public class EqualesMethod {
public static void main(String[] args) {
Value v1 = new Value();
Value v2=new Value();
v1.i=v2.i=100;
System.out.println(v1.equals(v2));
}
}
为什么第一个结果是true,第二个是false阿,equals()方法不是比较的两个对象的值吗,这两个例子中两个对象的值都是相等的阿
------解决方案--------------------equals并不是比较值,他和==一样比较的是引用,第一个是因为Integer覆盖了Object的equals方法,比较的是数值,第二个没有覆盖,所意仍然比较引用。
------解决方案--------------------equals()方法默认的仍然是比较引用,不是比较值,但是很多类库都已经覆盖了该方法,所以使用时已经是比较值了,如果你自定义了类,那么需要覆盖该方法,不然,仍然是比较引用,不是比较值《JAVA编程思想 forth edit》里,这样说的