在学习java过程中碰到了equals()用法的问题
public class EqualsMethod {
public static void main(String[] args) {
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1.equals(n2));
}
} /* Output:
true
*///:~
class Value {
int i;
}
public class EqualsMethod2 {
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));
}
} /* Output:
false
*///:~
为什么都是比较的对象,为什么结果不同?
object的equals方法只是默认继承了Object父类的空的抽象equals方法
public boolean equals(Object obj) {
return (this == obj);
}
}
equals()方法需要自己重写。
public boolean equals(Object obj) {
if(obj==null){
return false;
}else if(obj instanceof Value){
Value v = (Value)obj;
retrun this.i=v.i;
}
}
而Integer的equals方法是这样的
private final int value;
public Integer(int value) {
this.value = value;
}
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}这是sun帮写好了......