Я хочу продемонстрировать с помощью нескольких строк кода, что в 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?