我为这两个对象获取相同的哈希码。
案例1
String s=new String("ll");
String s1=new String(s);
但是对于案例2,我得到了不同的哈希码
案例2
String s=new String("ll");
String s1=new String("ll");
那么在案例1中是两个不同的对象创建或只有一个?
答案 0 :(得分:2)
'new'关键字始终会创建一个新对象。 因此,在情况1和2中,引用s和s1表示单独的对象。
鉴于哈希码基于值,在这两种情况下,为s和s1中的每一个生成相同哈希码。
代码如下:
// CASE 1
String s=new String("ll");
String s1=new String(s);
System.out.println(s.hashCode()); //prints 3456
System.out.println(s1.hashCode()); //prints 3456
// CASE 2
String ss=new String("ll");
String ss1=new String("ll");
System.out.println(ss.hashCode()); //prints 3456
System.out.println(ss1.hashCode()); //also prints 3456