字符串s1 =“ abc”;
字符串s2 = new字符串(“ abc”);
当我们比较两者
s1 == s2;它返回假
当我们比较它时
与s1.hashCode()== s2.hashCode一起返回true
我知道(==)检查引用ID的。在上面的比较中它返回true吗,因为上面的hashCode保存到相同的存储桶中?请给我解释
最佳答案
不要忘记您的哈希码是原始整数,使用==
比较原始变量将比较它们的值,而不是它们的引用(因为原始变量没有引用)
因此,具有相同内容的两个字符串将产生相同的哈希码,并且通过==
进行的比较是完全有效的。
存储桶的概念仅在将对象放入哈希集合(例如HashSet
)时才有效。哈希码的值指示对象进入哪个存储桶。哈希码本身不会存储。