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));
}
}
结果为true
这里的equals()比较的是内容。
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));
}
}
此时的结果又变回了false!这是由于equals()的默认行为是比较句柄(地址)。
所以除非在自己的新类中改变了equals(),否则equals()不会比较内容。
由于大多数Java类库都实现了equals(),所以它实际比较的是对象的内容,而非它们的句柄(地址)。