我正在深入研究Java的基础知识 . 我从这个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));
}
}
output:
a.hashCode()97
b.hashCode()97
假
真正
实际Java语言等于方法
public boolean equals(Object obj) {
return (this == obj);
}
在上面的例子中,a.equals(b)返回true,意味着满足条件a == b . 但那么为什么a == b在这个例子中返回false?
hashCode和地址不一样吗?另外,当我们说a == b或其他什么时,hashCode是否被比较?