Демонстрация сравнения строк с Java

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

Я ожидал такого вывода: разные строки , потому что с тестом s1 == s2 я фактически сравниваю две ссылки (то есть адреса) вместо содержимого объекта.

Но на самом деле я получил такой результат: одинаковые строки !

Просматривая Интернет, я обнаружил, что некоторые реализации Java оптимизируют приведенный выше код, так что s1 и s2 будут фактически ссылаться на одну и ту же строку.

Ну, как могу ли я продемонстрировать проблему с помощью оператора == при сравнении строк (или объектов) в Java?

7
задан Jérôme 31 August 2010 в 19:50
поделиться

1 ответ

Итак, как я могу продемонстрировать проблему, используя оператор == при сравнении строк (или объектов) в Java?

Вот способ:

String s = "ab";
String t = new String("ab");
System.out.println(s == t); // false

Также будьте осторожны при сравнении примитивных оболочек и использовании автоупаковки: Integer (и Long), например, кэширует (и повторно использует!) значения -128..127. Итак:

Integer s = -128;
Integer t = -128;
System.out.println(s == t);

напечатает true, а

Integer s = -129;
Integer t = -129;
System.out.println(s == t);

напечатает false!

2
ответ дан 6 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: