public final class String {
// 该字符型数组用于存储字符
private final char value[];
// 无线参数的构造器 , 此构造函数是不必要的,因为字符串是不可变的
public String() {
// 初始化字符数组value 为空
this.value = "".value;
}
// equals( ) 方法
public boolean equals(Object anObject) {
// 比较两个对象的地址,如果两个对象地址相同,则返回 true
if (this == anObject) {
return true;
}
// 判断 anObject 引用变量所指向的对象是否属于 String 类型或者 String 类的子类
if (anObject instanceof String) {
// 将 Object 类型的 anObject 强转为 String 类型
String anotherString = (String)anObject;
/*
获取当前String 实例的字符串长度
*/
int n = value.length;
if (n == anotherString.value.length) {
// 分别将 两个 String 实例的 字符数组赋值给 v1 和 v2 char 数组
char v1[] = value;
char v2[] = anotherString.value;
// 整数变量 i 的值用来指定数组的下标
int i = 0;
while (n-- != 0) {
// 从数组中下标为 0的位置开始,比较两个字符是否相等,依次往后挨着进行比较
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
}