首先会判断方法传入的参数与this方法调用对象是否为同一个对象,如果是,则返回true;
若不是,则会判断传入的对象是否为String类的一个实例,若不是,直接返回false;
若传入的对象是String的实例,则会将该对象转为String对象并将其用char数组保存的值进行一位一位比较,如果有一位不同返回false,全部相同返回true。
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;
}