java中的==,equals,hashCode

== 是关系操作符,如果2边是基本数据类型,比较的是值;如果2边是引用类型,比如String类型,则比较的是引用地址是否相等。

equals和hashCode都是对象的方法。
equals是Object 的 实例方法,比较两个对象的content是否相同。
hashCode是Object的native方法,比较对象的哈希值(在散列表中的索引值,实际上是一个int)。

equals在Object的实现就是==,但是很多类如String,Double等,对equals进行了重载,比较的结果是根据内容的出来的一个值。

如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同。

如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)。原因是哈希码可能出现散列冲突。

你可能感兴趣的:(java中的==,equals,hashCode)