==和 equals 的区别?
==在Java语言中是一个运算符;equals在Java语言中是Object类的一个方法.
使用"=="如果进行比较的是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址值是否相等。
使用equals()方法只能用来比较对象,不能比较基本数据类型.
在Java语言中,Object类是所有类的超类,所以,所有类都继承了Object的方法.在Object类中的equals()方法
//此为Object类的equals()方法源码
public boolean equals(Object obj) {
return (this == obj);
}
如上面代码所示,equals()方法底层使用的也是"=="号进行比较,所以若没有对 equals 方法进行重写,则比较的是引用类型的变量所指向的对象的地址值。
若对equals()方法进行重写,比如String类中对equals()方法的重写
//此为String类底层重写equals()方法的源码
public boolean equals(Object anObject) {
//使用"=="判断地址值是否相等
if (this == anObject) {
//地址值相等,就是同一个字符串,返回true
return true;
}
//判断anObject是否是String类的实例
if (anObject instanceof String) {
//是String类的实例,就进行强制转换为String类型
String anotherString = (String)anObject;
//获取被比较对象的字符长度
int n = value.length;
//判断两个对象的字符长度是否相等
if (n == anotherString.value.length) {
//将两个String对象转换成字符数组
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
//进行while循环,比较在对应位置上的字符是否相等
while (n-- != 0) {
if (v1[i] != v2[i])
//不相等则返回false
return false;
i++;
}
//如果相等,则返回true
return true;
}
}
//不是Stirng类型的实例,则返回false
return false;
}
重写过后的equals()方法,比较的是两个String类型对象的成员信息是否相等,也是我们平常在写代码时需要使用的功能.
以上就是我对"=="和"equals()"方法的区别认识,仅供大家进行参考,谢谢!
注意:以上代码皆为源码,上面的注释为本人理解手动进行注释,仅供参考!!!