1.hashCode
首先,hashCode的英文翻译就是散列码,它使用一个int值来代表对象。
我们可以使用System.identityHashCode(Objectx)方法返回默认的hashcode,无论你创建的对象是否覆盖磨人的hashCode。
hashCode方法主要是用于HashMap这样的哈希表,差不多就是全部的哈希表。
我们的哈希链表也可以叫做哈系桶,默认有16个槽位,长度为15,位置的判定主要是依靠除数和求余,更快地操作是用机器码即2的N次方,20-2^4=4。
2.equals
hashCode并不需要唯一性,但equals必须严格判断两个是否相同
以下是equals方法有如下特性:
|自反性|对称性|传递性|一致性|null|
x.equals(x)一定返回true
如果x.equals(y)=true;so y.equals(x)=true
x=y,y=z=>z=x
x and y 中介值没有改变,那么无论如何调用都不会改变
任何不是null的x,x.equals(null)一定返回false
equalsandhashcode的规定