Я хочу продемонстрировать с помощью нескольких строк кода, что в Java для сравнения двух строк (String
) вы должны использовать equals()
вместо оператора ==
.
Вот что я пробовал:
public static void main(String Args[]) {
String s1 = "Hello";
String s2 = "Hello";
if (s1 == s2)
System.out.println("same strings");
else
System.out.println("different strings");
}
Я ожидал этого вывода: different strings
, потому что с тестом s1 == s2
я фактически сравниваю две ссылки (т.е. адреса) вместо содержимого объекта.
Но на самом деле я получил такой результат: same strings
!
Просматривая Интернет, я обнаружил, что некоторые реализации Java оптимизируют приведенный выше код так, что s1
и s2
будут фактически ссылаться на одну и ту же строку.
Хорошо, как я могу продемонстрировать проблему, используя оператор ==
при сравнении строк (или объектов) в Java?
new
или нет при создании экземпляра String приведет к чему-то другому! 01.09.2010