java编程思想里看到这段代码()。
第一个print调用的是Object的equals(),判断引用地址;第二个print调用的是String的equals(),判断内容。
我想知道java是如何判断应该调用Object还是String的equals()?
package test;
class Value {
String j;
}
public class test1 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.j = v2.j = "Hello World";
System.out.println(v1.equals(v2));
System.out.println((v1.j).equals(v2.j));
}
}
Object.class
public boolean equals(Object obj) {
return (this == obj);
}
String.class
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}