“==”和equals的区别?
“==”
1,比较8大基本数据类型(byte,short,int,long,float,double,char,boolean):
==比较是值是否相等。
2,比较6大引用数据类型(类,接口,抽象类,枚举,注释,数组)
==比较是地址值是否相等。
equals
1,只能比较引用数据类型
equals比较的是内容是否相同。
equals和hashCode的区别?
重点结论
前提是两个对象都重写了hashCode和equals方法,
equals相等的两个对象,hashCode一定相等。
hashCode相等的两个对象,equals一定相等。
上述结论解释:
equals比较的引用数据类型比较的是两个对象的内容是否相等,而hashCode比较的是两个对象的哈希值是否相等(两个内容不同的值生成的哈希值可能也是相同的,所以再进行equals比较的时候,就可能不相等。这就是所谓的哈希碰撞(HashMap底层原理会有哈希碰撞))
顺带提一下
equals和hashCode,一个是性能好(hashCode),一个是可靠性(equals)。
equals的比较比较全面复杂,效率较低,而hashCode比较只用生成一个哈希值就可以了,效率高。