Если два String
s не идентичны, то почему я могу использовать строки как ключи в HashMap
без использования того же String
объекта?Почему я могу использовать строки в качестве ключей в 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?
ли HashMap
есть специальное поведение для String
объектов? Если нет, то зачем использовать две «разные» строки для ввода и получения значений из хэша?
Обратите внимание, что 's1 == s2' будет' истинным' из-за интернирования строк. –
Тогда почему стандартная практика использует '.equals()' для сравнения 'String'? –
@Ted Hopp s1 == s2 будет истинным из-за * постоянного объединения *. – EJP