JVM面试题系列:两个对象值相同(x.equals(y) == true),但是可能存在hashCode不同吗?
面试官的考察点
这道题仍然是考察JVM层面的基本知识,面试官认为,基本功扎实,才能写出健壮性和稳定性很高的代码。
涉及到的技术知识
(x.equals(y)==true),这段代码,看起来非常简单,但其实里面还是涉及了一些底层知识点的,首先我们基于equals这个方法进行探索。
equals这个方法,在每个对象中都存在,以String类型为例,其方法定义如下
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) { //判断对象实例是否是String
String anotherString = (String)anObject; //强转成string类型
int n = value.length;
if (n == anotherString.value.length) { //如果两个字符串相等,那么它们的长度自然相
JVM面试题系列:两个对象值相同(x.equals(y) == true),但是可能存在hashCode不同吗?最先出现在Python成神之路。
共有 0 条评论