Jeśli dwa identyczne String
nie są identyczne, to dlaczego mogę używać łańcuchów jako kluczy w HashMap
bez używania tego samego obiektu String
?Dlaczego mogę używać ciągów jako kluczy w HashMap?
String s1 = "Test";
String s2 = "Test";
System.out.println(s1 == s2); // should be false
System.out.println(s1.equals(s2)); // should be true
HashMap<String, String> map = new HashMap();
map.put(s1, "foo");
System.out.println(map.get(s2)); // should be "foo"--but why?
Czy HashMap
mieć jakieś szczególne zachowanie dla String
obiektów? Jeśli nie, dlaczego dwa "różne" ciągi mogą być użyte do umieszczenia i uzyskania wartości z hasza?
Zauważ, że 's1 == s2' będzie miało wartość' true' z powodu interwencji ciągów znaków. –
Dlaczego więc standardową praktyką jest używanie '.equals()' do porównywania 'String'ów? –
@ Ted Hopp s1 == s2 będzie prawdą z powodu * stałej puli *. – EJP