hashCode和equals


title: 每日深耕,勤练不缀

有一个想法,就是将自己每天对技术的感悟写下来,有时候我们弄通一个小技术,感觉太丢人了,这么小的东西怎么写。但是我就要写,因为我以后会用到,大家以后也会用到。

HashCode 和equals方法


前言

每个java小白都会遇到的阵痛,我写下来。
一句古语:秦人不暇自哀而后人哀之,后人哀之而不鉴之,亦使后人复哀后人也。


hashCode可以翻译为哈希码,或者散列码。应该是一个表示对象的特征值的int整数。
创建一个值以后,缓存中有个行有个列,行+列 =hash码
equals方法应该用来判断两个对象从逻辑上是否相等
ps:(引用的==就代表两个引用是否在指向同一个对象)
如果eauals是true ,hashCode就应该相等
如果hashCode 相等,equals不一定为true

String下的equals方法
hashCode和equals

因为java的优化,就相当于“永久代”,固定的存储空间(不了解的可以翻看我前面那一篇关于String类的解读)
所以当s2运行后,就自动会将s2存入s1的位置,所以“==”就为true,只有当字符串足够长时,java不会优化,也不会放在同一个位置,就会为false.
而equals()则会一个一个字符的相比,所以就一定为true

总结

第一次面试,对hashCode很是陌生,大家一定要对java基础有着一定的了解,一定要熟悉专属名词,“==”永远是比位置,看是否指向同一个对象,而equals在引用中是指逻辑上是否一致,在Sting中则是体现值是否相等!!

PEACE!!!