一、equals()方法的由来
equals()最开始是定义在Java.lang包下的Object中的一个经行比较的方法,根据Object类的核心代码可以看出来,在Object类中equals()方法比较时使用“==”运算符来比较两者地址,但实际应用情况下,人们往往想比较两者的值是否相同,当两个相同的值存进不同内存地址时,这个比较方法就不在准确了,故而在String类中就对equals()方法进行了重写!
二、String类中的equals()方法
String类中对Object父类中的equals()方法进行了重写,改变了Object类中equals()方法的缺点,可以对字符串内容进行比较,关于重写的代码以及注释如下:
//String类中的equals()方法的重写
public boolean equals(Object anObject) {
//先对两个元素的地址比较
//若地址相同则内容必定相同,返回true
//若地址不同则进行内容比较
if (this == anObject) {
return true;
}
//对内容进行比较
if (anObject instanceof String) {
//anotherString来接收要比较的值
String anotherString = (String)anObject;
int n = value.length;
//对两者长度进行比较,若长度不同则二者内容不同,返回false
//若长度相同则经行下一步比较
if (n == anotherString.value.length) {
//将字符串转为char[]数组,进行逐位比较
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
//while循环进行逐位比较,若有一位不同,则返回false
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
//每个字符都相同则返回true
return true;
}
}
return false;
}
标签:return,String,Object,equals,源代码,比较,类中
From: https://blog.csdn.net/cyf123__/article/details/145268026