Java基础
首先明确答案,两个对象的hashCode()相同,equals()可能相等,也可能不相等。
接下来详细说一下我查阅的资料和自己的理解。
之前<“==”和equals()方法的区别>文章里对equals()方法做过详细阐述,在这里再大致说一下,不了解的可以点击上面的链接查看。
equals():比较的是非基本类型的数据的引用地址(即内存地址)是否相同,但是对于重写equals方法的类型,比较的是对象内容是否相同。
hashCode():计算对象实例的哈希码,用于返回字符串的哈希码。其中哈希码使用散列表(也叫哈希表)存储的。但是因为哈希表存储的Hash散列值时可能存在有冲突的情况,因此,两个对象的equals()可能不同,虽然概率很低。
因此在比较两个对象是否相等的时候,单单比较两个对象的hashCode是否相等是不可以的。