How the equals() method works(Equals()方法的工作原理)
问题描述
我正在深入研究Java的基础知识。我从this article推断,Java‘equals’方法意味着,如果两个对象相等,则它们必须具有相同的hashCode()。
这是我的示例。
public class Equals {
/**
* @param args
*/
public static void main(String[] args) {
String a = new String("a");
String b = new String("a");
System.out.println("a.hashCode() "+a.hashCode());
System.out.println("b.hashCode() "+b.hashCode());
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
输出:
A.hashCode()97B.hashCode()97
FALSE
真
实际的Java语言‘equals’方法:
public boolean equals(Object obj) {
return (this == obj);
}
在上面的示例中,a.equals(B)返回了TRUE,这意味着满足条件‘a==b’。但为什么在该示例中‘a==b’返回FALSE?
hashCode和Address不是一样的吗?另外,当我们说‘a==b’或其他词时,会比较‘hashCode’吗?
推荐答案
String
类已重写equals()
方法。请按照String equals()文档进行操作。
a.equals(B)已返回True,表示条件a==b满足
这是Object
类中equals()
的默认实现,String
类已覆盖默认实现。当且仅当参数不为空并且是表示与此对象相同的字符序列的字符串对象时,它才返回True。
hashCode和Address不是一个吗?
不一定。有关hashCode()的进一步阅读。
这篇关于Equals()方法的工作原理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Equals()方法的工作原理
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01