==和equals详解
==详解
用于比较内存单元的内容。如果是基本类型,就是比较它们的值是否相等,如果是引用类型,比较的就是引用的值,引用类型的值可以认为是对象的逻辑地址,同一个对象用==比较,才会返回true。
equals详解
equals是在object中被定义的,定义中就是用**==**来实现的,默认是对比对象的地址。父类object是希望子类去重写这个方法,实现某些逻辑层面的值的比较。
hashcode主要是在hash表中起作用,为了更快速定位到数据的存放位置,需要重写equals对应的hashcode。重写hashcode的原则:
- equals相等,hashcode也应该相等,反之不成立 。
- equals方法不能太简单,否则hash冲突过多。也不能太复杂,否则计算复杂,影响性能 。