Я хочу продемонстрировать с помощью нескольких строк кода, что в Java, чтобы сравнить две строки (String
), вы должны использовать equals()
вместо оператора ==
.Демонстрируя сравнение строк с Java
Вот то, что я пробовал:
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
я фактически сравнивая две ссылки (то есть адреса) вместо содержания Objet в.
Но я действительно получил этот выход: same strings
!
Сидя в Интернете, я обнаружил, что некоторые реализации Java позволит оптимизировать код выше, так что s1
и s2
будет ссылающийся ту же строку.
Ну, как я могу продемонстрировать проблему с помощью оператора ==
при сравнении строк (или объектов) в Java?
Собственно, для JLS все компиляторы Java должны выполнять эту оптимизацию. – Darron