在说明什么是hash code之前,首先应该了解
equals()
方法的作用。
java中的equals()方法
java中的equals()
方法是Object
类中的一个方法,它用于两个对象之间的比较。默认情况下,如果两个对象的内存地址相同,那么equals()
方法会返回true
,否则返回false
。
当然也可以在子类中重写equals()
方法,比如String
类的equals()
方法,除了比较两个对象的内存地址外,还会比较字符串的值。即如果两个String
类对象的内存地址不同,但字符串的值相同,equals()
方法也会返回true
。
什么是java中的hash code
在java中,每个对象都有一个hash code
值,这个值是一个整数类型,由hash算法生成。
要得到一个对象的hash code
,需要调用hashCode()
方法。这个方法也是定义在Object
类中的,因此,自己写的类也可以调用hashCode()
方法。
public static void main(String[] args) {
String str = "Hello, World!";
System.out.println(str.hashCode());
}
equals()方法与hashCode()方法之间的关系
- 如果两个对象调用
equals()
方法返回true
,即两个对象内存地址相同,那么它们的hash code
一定是相同的; - 如果两个对象调用
equals()
方法返回false
,即两个对象的内存地址不相同,那么它们的hash code
可以相同也可以不同。即如果两个对象的hash code
相同,那么它们调用equals()
方法不一定返回true
。
参考链接
What is a hash code in Java?
Equals() and Hashcode() in Java