字符串s1 =“ abc”;

字符串s2 = new字符串(“ abc”);

当我们比较两者

s1 == s2;它返回假

当我们比较它时
与s1.hashCode()== s2.hashCode一起返回true

我知道(==)检查引用ID的。在上面的比较中它返回true吗,因为上面的hashCode保存到相同的存储桶中?请给我解释

最佳答案

不要忘记您的哈希码是原始整数,使用==比较原始变量将比较它们的值,而不是它们的引用(因为原始变量没有引用)

因此,具有相同内容的两个字符串将产生相同的哈希码,并且通过==进行的比较是完全有效的。

存储桶的概念仅在将对象放入哈希集合(例如HashSet)时才有效。哈希码的值指示对象进入哪个存储桶。哈希码本身不会存储。

09-05 01:57
查看更多