java中hashcode()方法有什么做用呢?

hashcode这个方法是用来鉴定2个对象是否相等的。
那你会说,不是还有equals这个方法吗?

不错,这2个方法都是用来判断2个对象是否相等的。可是他们是有区别的。

通常来说,equals这个方法是给用户调用的,若是你想判断2个对象是否相等,你能够重写equals方法,而后在代码中调用,就能够判断他们是否相等了。简单来说,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是否是相等。举个例子,有个学生类,属性只有姓名和性别,那么咱们能够认为只要姓名和性别相等,那么就说这2个对象是相等的。

hashcode方法通常用户不会去调用,好比在hashmap中,因为key是不能够重复的,他在判断key是否是重复的时候就判断了hashcode这个方法,并且也用到了equals方法。这里不能够重复是说equals和hashcode只要有一个不等就能够了!因此简单来说,hashcode至关因而一个对象的编码,就好像文件中的md5,他和equals不一样就在于他返回的是int型的,比较起来不直观。咱们通常在覆盖equals的同时也要覆盖hashcode,让他们的逻辑一致。举个例子,仍是刚刚的例子,若是姓名和性别相等就算2个对象相等的话,那么hashcode的方法也要返回姓名的hashcode值加上性别的hashcode值,这样从逻辑上,他们就一致了。

要从物理上判断2个对象是否相等,用==就能够了 ide



HashCode() is explicitly used in methods where hash functions are used, like hashTable() etc.

One should always override hashCode() when overriding equals(). Unexpected behaviour will occur if you don't do so.

HashCode() should have the same value whenever equals() returns true.
编码

相关文章
相关标签/搜索