String hashCode方法疑问

public class CollectionTest{
    public static void main(String args[]) {
        String s1 = "hello";
        String s2 = "hello";
        System.out.println(s1.hashCode());
        System.out.println(s2.hashCode());
    }
}

代码运行结果是两个字符串对象的hash值是一样的,这是不是可以理解为内存中只有一个内容为hello的字符串对象,s1和s2引用都指向了这个对象?

阅读 1.8k
1 个回答

这个例子确实是同一个String对象,用==也是true,但是并没有什么关系
对于String,哈希码是用内容算出来的,一样的内容得到的哈希码也就是一样的
也就是通常说的,equals返回truehashCode也要一样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题