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 です。
ハッシュコードに関しては似ていますが、それでも違いますか?