两个方法都是Object类中的方法
在未进行重写的情况下,equals和==是等价的,都返回两个对象地址的比较
而hashcode的引入是为了减少equals的次数
hashcode是通过某种复杂的移位实现得到某个int值,但是不同的对象可能得到该值碰巧相等
如果两个对象==,那么它们的hashcode一定相等,所以在需要进行对象是否相等的判断之前,判断hashcode是否相等,如果不相等则无需调用equals方法。
即
equals为true则一定hashcode相等,hashcode相等不一定equals
当我们需要判断一个类的两个实例对象的内容是否相等时,通常需要重写equals方法,此时必须重写hashcode方法,避免两个对象内容相同然而hashcode不同。
例如我们常用的String类就是既重写了equals又重写了hashcode