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));
}
}
说说两个问题:1.输出结果;2.输出结果的原因.
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));
}
}
说说两个问题:1.输出结果;2.输出结果的原因.
2.输出结果的原因,Value 类没有重载equals方法,于是v1.equals(v2)会调用Object的equals方法,而Object的equals是对refrence进行比较,呵呵,而v1,v2引用的是通过new操作产生的两个不同对象.
public class EqualsMethod {
public static void main(String[] args) {
Integer v1 = new Integer(47);
Integer v2 = new Integer(47);
System.out.println(v1.equals(v2));
}
}
此时的结果和原因呢,大家说说看.
true
因为INTEGER不是对象
public boolean equals(Object obj){
if(obj instanceof Integer){
retrun value==((Integer)obj).intValue();
}
return false;
}
结果显而易见:true。