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
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 转换 ldap 日期 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01