我正在深入研究 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));
}
}
输出:
a.hashCode() 97
b.hashCode() 97
假
真
实际的 Java 语言 'equals' 方法:
public boolean equals(Object obj) {
return (this == obj);
}
在我上面的示例中,a.equals(b)返回了 true,这意味着条件 'a==b' 得到满足。但是为什么在那个例子中'a==b'返回假?
hashCode 和 address 不是一回事吗?此外,当我们说“a==b”或其他内容时,是否比较了“hashCode”?