本人最近在看java的源码,我对String类的源码的equals方法有一点小问题
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
这段代码看的不是太懂,请给我详细讲解一下,谢谢
首先的弄清楚string.equals方法作用,是用来判断2个字符串的值是否相等,这一步判断的是2个对象的地址是否相等,如果地址相等,显然这两个是同一个对象,他们的值必然相等,所以返回true
==, 1)对于原始数据类型。byte,short,char,int,long,float,double,boolean 他们之间的比较,双等号(==),比较的是他们的值。 2)对于复合对象,双等号(==),比较的是两个对象的内存中的存放地址。
String 类的equals() 方法是覆盖了Object 类的方法,主要是增加了以下代码逻辑
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;
}
}
1、比较两个字符串的长度
2、比较两个字符串的字符数组是否完全一致