Returns an integer hash code for this object. By contract, any two objects for whichequals
returns true
must return the same hash code value. This means that subclasses ofObject
usually override both methods or neither method.
返回这个对象的一个整型的hasd代码,这个两个对象如果相等就返回true否则必须返回,意思就是这个对象的子类经常复写方法或。
Note that hash values must not change over time unless information used in equals comparisons also changes.
See Writing a correct hashCode
method if you intend implementing your ownhashCode
method.
注意这个hash值必须永久不改变除非用来相等比较才改变。
查看Writing a correct hashCode
method如果你计划实现你自己的hashCode 方法
this object's hash code.
网上的解释
Hashcode()使用在HashTable时产生Hash code(可以参考数据结构的散列表),而equal()则用来比较两个object是否相等。这两个方法都可以由用户重写。(Java中自带的equal()是比较内存地址的,在大多数情况下不符合用户的需求)
String的HashCode()是在String被用作Key时(插入HashTable)产生Hash code,在String的equal()中也用到了HashCode()。这两者的作用是不一样的,只是在String的实现中恰好可以用来比较。(这也说明Java的String.HashCode()写得好,可以产生独一无二的Hash code!)
一句话:在比较object时使用equal()
在需要object作为key(使用HashTable)时使用Hashcode()
还是不懂,key可以用equal比较再说key不可能会用一样的key