Equals()方法的工作原理 [英] How the equals() method works

查看:81
本文介绍了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()97
B.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()方法的工作原理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆