黑马程序员技术交流社区
标题:
String类的equals方法
[打印本页]
作者:
pizhihui
时间:
2015-6-9 21:44
标题:
String类的equals方法
Object类的equals方法时和==的效果是一样的,在比较引用数据类型的时候,是比较的地址,但是String类的时候,却是比较的是内容,这是为什么了?这的跟踪源代码看看,
String的equals方法重写了父类Object的equals方法,让比较的是否是内容相同,而不是地址值是否相同
public boolean equals(Object anObject) {
if (this == anObject) {//如果是同一个对象,返回true
return true;
}
if (anObject instanceof String) {//判断是否是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;
}
复制代码
从String类的源代码可以看出,String类重写了Object类中的equals方法,代码中比较的就是String中存储的内容是否相同,所以在调用String类的equals方法的时候,比较的是内容是否相同。
作者:
GoldMan
时间:
2015-6-9 22:07
好,收藏了
作者:
sunny~
时间:
2015-6-9 22:10
嗯,就是这样的
作者:
xiaodong
时间:
2015-6-9 22:16
学习了!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2