关于String类型的等值比较和内容比较,是学习java甚至任何编程语言所共同的常见问题,理解String类型的等值比较和内容比较也是面试经常问到的问题。即,判断两个对象是不是同一个对象。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。情况2:类覆盖了 equals() 方法。如果没有就在常量池中重新创建一个String对象。hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。但是如果发现有相同 hashcode 值的对象,这时会调用 equals()方法来检查 hashcode 相等的对象是否真的相同。如果两者相同,HashSet 就不会让其加入操作成功。这样我们就大大减少了 equals 的次数,相应就大大提高了执行速度。

浅谈String类型等值比较引起的“==”、“equals()”和“hashCode”思考

浅谈String类型等值比较引起的“==”、“equals()”和“hashCode”思考

浅谈String类型等值比较引起的“==”、“equals()”和“hashCode”思考

浅谈String类型等值比较引起的“==”、“equals()”和“hashCode”思考