TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #237 6.37K
Почему нельзя сравнивать объекты через «==» ?
Спросят с вероятностью 12%

Сравнение объектов с использованием оператора == проверяет, ссылаются ли две ссылки на один и тот же объект в памяти, а не сравнивает их содержимое. То есть, если две переменные ссылаются на разные объекты, даже если содержимое этих объектов одинаково, он вернёт false.

Пример
String str1 = new String("Java");
String str2 = new String("Java");

System.out.println(str1 == str2); // Выведет "false", потому что str1 и str2 указывают на разные объекты в памяти


В этом примере, несмотря на то что текстовое содержимое str1 и str2 одинаково ("Java"), оператор == вернет false, потому что str1 и str2 — это разные объекты в памяти.

Правильное сравнение объектов

Следует использовать метод .equals(), который предназначен для сравнения содержимого объектов. Большинство классов в стандартной библиотеке и пользовательские классы должны переопределять метод .equals() для обеспечения корректного сравнения значений объектов.
String str1 = new String("Java");
String str2 = new String("Java");

System.out.println(str1.equals(str2)); // Выведет "true", потому что содержимое объектов одинаково


В этом случае метод .equals() сравнивает значения строк, а не их ссылки, и возвращает true, потому что текстовое содержимое str1 и str2 действительно одинаково.

Использование == для сравнения объектов не является корректным подходом, когда необходимо сравнить их содержимое, поскольку он сравнивает только ссылки на объекты. Для сравнения содержимого объектов следует использовать метод .equals(), который должен быть корректно переопределен в классе объектов, которые предполагается сравнивать.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
  • 👍 22
  • 🔥 2
More from @easy_java_ru
  1. Oct 12, 2026🤔 Как остановить поток? Остановить поток в Java можно несколькими способами, но важно пом…
  2. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  3. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  4. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  5. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  6. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →