情况1,地址相同

/*public boolean equals(Object anObject){//是name1调用的equals方法。所以anObject对象为name2。此处有上转型
if(this==anObject){因为是name1调用的equals方法,所以this为name1。因为anObject存的是上转型对象name2.name1和name2的值都为“Tom”所以地址相同。
return true;//地址相同了。内容一定相同所以会返回true.结束equals方法。
}
情况2地址不同


/*public boolean equals(Object anObject) {//首先name1调用的equals方法,name2传入anObject}
if (this == anObject) //this 为name1 anObject为name2.定义name2时新创了一个String对象。所以name1 name2地址不相同。所以false
return true;}
if(anObject instanceof String) //因为anObject中包含的是name2是String类型创建的上转型对象。所以是true.
String anotherString = (String)anObject;//下转型
int n = value.length;//value为常量
if (n == anotherString.value.length) //anotherString.value.length代表name2中有多少个字符。长度相等则为true
char v1[] = value;表示name1字符组成的数组
char v2[] = anotherString.value;表示name2字符组成的数组
int i = 0;
while (n-- != 0) {//当字符串长度大于1时
if (v1[i] != v2[i])//从0开始,逐个比较各字符只要有一个不相等,两个字符串就不相同,返回false
return false;//返回false并结束方法
i++;
}
return true;//每个字符都相同,返回true
}
}
return false;
浙公网安备 33010602011771号