Задать вопрос
@artemfisher

Почему способ создания String влияет на результат сравнения?

Добрый день!
1. Вернет “no”.
String s1=new String("Hello");
String s2=new String("Hello");
          
if(s1==s2)
System.out.println("yes");
else
System.out.println("no");


2. Вернет “yes”.
String s1="Hello";
String s2="Hello";
          
if(s1==s2)
System.out.println("yes");
else
System.out.println("no");


Почему?
  • Вопрос задан
  • 242 просмотра
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
Решения вопроса 2
xez
@xez Куратор тега Java
TL Junior Roo
Потому, что Java String pool
(вопрос встречается на собеседованиях, кстати)
Ответ написан
Комментировать
@artem-dainov
Php, java, js. Boot spring, jquery, git
Потому что String str1 = "hello";
String str2 = "hello";
это один и тот же объект. Переменные имеют ссылку на него. Это пул строк в java.
А если создавать через конструктор, то мы принуждаем к тому, чтобы специально создать два разных объекта.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@eledev
К ответам выше могу добавить что для сравнения строк применяется метод equals() который сравнивает не ссылки а содержимое строк.

String s1=new String("Hello");
String s2=new String("Hello");
          
if(s1.equals(s2))
System.out.println("yes");
else
System.out.println("no");


Вернет “yes”.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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