在Java语言中,equals方法在使用时:
针对包装对象,比较的是对象的值(包括 boolean,byte,char,short,int,long,float,double)
针对String对象,比较的也是String的值(因为String内部重写了equals方法和hashCode方法)
针对其他object对象,比较的是两个对象的引用是否指向同一个内存地址
而当我们重写object对象的equals方法时,同时也要重写hashCode方法,为什么呢? 首先来看几个定义
hash哈希又称之为散列,用于以常数平均时间执行插入、删除和查找的技术。(对排序不能得到有效的支持)
在对象存储的散列表里面,hashCode用来指定对象存储的内存地址。而equals用来判断对象的引用是否指向同一个地址,也就是判断两个对象的hashCode值是否一致