public class abc1 {
private String s;
public abc1(String s){this.s=s;}
public static void main(String args[])
{
HashSet<Object> hs=new HashSet<Object>();
abc1 a1= new abc1("abc");
abc1 a2= new abc1("abc");
String s1= new String("abc");
String s2= new String("abc");
hs.add(a1);
hs.add(a2);
hs.add(s1);
hs.add(s2);
System.out.println(hs.size());
}
}
为什么上面的程序输出是3?
编辑
看到以下评论,我正在扩展我的问题:
System.out.println (s1 == s2);
s1 和 s2 是指同一个对象吗?如果那么上面的语句应该打印 true 但它的输出是 false。
它们在哈希码方面是否相似但仍然不同?