源代码:
public boolean equals(Object anObject) {if (this == anObject) { return true;}if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { //????char v1[] = value;char v2[] = anotherString.value; //????int i = offset;int j = anotherString.offset; //????while (n-- != 0) { if (v1[i++] != v2[j++]) return false;} //???return true; }}return false; }解释:
anObject instanceof String;首先上边的语句,先判断anObject是不是String类的一个实例,如果是运行下边的语句String anotherString = (String)anObject;字符串是一个引用数据类型,本身是String个对象,在这里把传进来的anObject这个对象,赋给anotherString (需要类型转换)他当然可以调用String类里的成员,你说的count、value、offset都是String的成员 int n = count;//这个count是原始字符串的长度 if (n == anotherString.count) { //把字符串长度和要比较的字符串长度对比,长度都不同的话就不用比字符串内容了char v1[] = value;//把原始字符串义字符形式存入数组char v2[] = anotherString.value; //把要比较字符串义字符形式存入数组int i = offset;//数组下标int j = anotherString.offset; //????while (n-- != 0) { //遍历数组,比较 数组元素是否相同 if (v1[i++] != v2[j++]) return false;//在遍历的过程中如果有不同的就返回false;} //你如果用过equals这个方法应该知道它返回的是boolean值return true; }}return false; }
时间: 2024-10-18 09:11:41