Java中hashcode()和equals()关系
Object类是所有类的父类。
getClass():返回对象的字节码
hashcode():对象的hashcode值
equals():判断两个对象是否相等使用地址判断
native:
查看源码
代表本地方法(里层是C或者C++)
每个大的公司都有自己的JVM
hashcode值可以侧面的被当成对象的地址,但是hashcode是一种理念,通过散列运算实现每一个内存地址的唯一值。哈希算法非常多,只要符合理念即可。
openJDK提供了五种哈希算法,其中有一种是直接返回内存地址。就是内存地址的哈希值,这句话不算错,但不一定准确。
注意:如果两个对象相等,则这两个对象的hashcode()一定相等。
如果两个对象的hashcode()相等,则这两个对象不一定相等。(因为存在哈希碰撞)
如果两个对象的equals()相等,则这两个对象的hashcode()一定相等。
如果两个对象的hashcode()相等,则这两个对象的equals()不一定相等。(因为存在哈希碰撞丶)