理解string的equals方法和 == 方法
string 的 == 比较的是地址是否相等
string 的equals 比较的是
1.先判断地址是否相等 这个Object的equals的判断方式一样
2.在判断是否是String类型,是的话 进行字符比较 都一样的话返回true
3.否则返回false
基本数据下的equals方法比较方式:
1.先比较引用地址是否相同,相同返回true
2.在比较值是否相等 想等返回true
比如 Integer String character 这些包装类equals比较方法大同小异
3.最后的是自己创建的类的实例的equals的比较判断将在其后讲解
如下:是解说过程
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
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;
}
}
在引用类型中,"=="是比较两个引用是否指向堆内存里的同一个地址(同一个对象),而equals是一个普通的方法,该方法返回的结果依赖于自身的实现。我们先看一下Person这个类,并没有equals方法呀,那为什么不报错呢?在Java中,如果一个类没有继承其它类,那么它默认继承Object这个类,打开Object这个类看一下,发现如下代码,Person这个类的equals方法就继承自这里
很简单,就一句代码,判断两个引用是否指向同一个对象,两个Person对象在堆内存中的表现如下图所示:
最后是我们String的实现
文章部分内容来自于https://zhuanlan.zhihu.com/p/27573287
java那些事 -专栏
本文详细解析了Java中equals方法与==操作符的区别。==用于比较对象引用是否指向同一内存地址,而equals则用于比较对象的内容是否相同。对于String等类,equals会逐字符比较字符串内容。
518

被折叠的 条评论
为什么被折叠?



