看到很多equals与==号的说法,今天我也谈谈!
先放JavaObject源代码中的equals方法 java代码133行
public boolean equals(Object obj) {
return (this == obj);
}
通过在这个我们可以看到实际上equals和==的实现是一样的。那么为什么又有比较内存地址跟比较值得区分呢?
下面我们在看看一段代码(引用Java String 源代码 1005行)
public boolean equals(Object anObject) {
if (this == anObject) { //首先这里也是直接比较内存,也就是说两个对象引用同一对象值肯定相同
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++]) //这里进行值比较,可以看到取出字符比较
return false;
}
return true;
}
}
return false;
}
通过这段代码我们可以看到equals和==号本身是没有区别的,而子类中重写父类方法时进行了区分。
总结:
站在Object这层看equals和==没有区别;
从应用的角度看我们应该覆写equals方法加以区分它和==
分享到:
相关推荐
能够加强对java中equals与==区别的理解。
equals与==之间的区别,记事本详解
java 资料 equals 与== 的区别
【Java面试题】equals与==的区别
equals与==的区别?equals和==有什么区别? Java解惑系列之一--equals和==之间究竟有什么区别 稍微学过一些java的同学都可能在网络上看到这样的一道题: 在java语言当中,equals和==之间究竟有什么区别? 而这道...
java中equals和==的区别.doc java中equals和==的区别.doc
NULL 博文链接:https://771816006-qq-com.iteye.com/blog/1394972
主要介绍了详解 Java 中 equals 和 == 的区别的相关资料,equals 和 == 都是用来检测两个字符串是否相等,返回值也都是布尔型,但是两者在内部比较的处理中却不尽相同需要的朋友可以参考下
主要给大家介绍了关于Java中equals与==的用法和区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
通过例子详细解释java中equals和==区别。实例丰富,适合初学者,便于理解,
Java 中equals和==的区别
java中equals和==的区别.pdf
java中equals和==的比较.pdf
java中equals和==的区别.docx