Различия между оператором == и методом equals() при сравнении строк в Java

Вывод: true, false, true, true. Оператор == сравнивает ссылки, а String.equals — последовательность символов, поэтому отдельный объект third равен первым по содержимому.

Короткий ответ

Что ответить на собеседовании

Вывод: true, false, true, true. Оператор == сравнивает ссылки, а String.equals — последовательность символов, поэтому отдельный объект third равен первым по содержимому.

Подробный разбор

Ответ с пояснениями

Условие

В данном примере рассматривается, как работают оператор == и метод equals() при проверке равенства строк в Java.

String first = "123";
String second = "123";
String third = new String("123");

System.out.println(first == second);
System.out.println(first == third);
System.out.println(first.equals(second));
System.out.println(first.equals(third));

Ответ

Вывод: true, false, true, true. Оператор == сравнивает ссылки, а String.equals — последовательность символов, поэтому отдельный объект third равен первым по содержимому.

First и second получают один интернированный литерал "123". New String("123") создаёт другой объект, несмотря на тот же текст. Поэтому first == third ложно, но first.equals(third) истинно. Для пользовательских строк используют equals; если любая ссылка может быть null, удобно Objects.equals(first, third). Нельзя переносить совпадение ссылок строковых литералов на любые строки, пришедшие из файла или сети.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее