相关疑难解决方法(0)

617
推荐指数
11
解决办法
57万
查看次数

equals()方法的工作原理

我正在深入研究Java的基础知识.我在本文中推断,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));

    }

}
Run Code Online (Sandbox Code Playgroud)

输出:
a.hashCode()97
b.hashCode()97
false
true

实际Java语言等于方法

  public boolean equals(Object obj) { 
    return (this == obj); 
  }
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,a.equals(b)返回true,意味着满足条件a == b.但那么为什么a == b在这个例子中返回false?

hashCode和地址不一样吗?另外,当我们说a == b或其他什么时,hashCode是否被比较?

java equals

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

equals ×2

java ×2

hashcode ×1

overriding ×1