Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: integer, wrapper, equals

Как сравниваются объекты-обёртки, например Integer?

Вопрос проверяет понимание различий между сравнением ссылок и значений, а также особенностей объектов-обёрток.

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

Объекты-обёртки можно сравнивать по ссылке и по значению.
Оператор == сравнивает ссылки, а метод equals() — значения.
Для Integer результат == может быть неожиданным из-за кеширования.
equals() всегда сравнивает числовое значение.
Для корректных сравнений следует использовать equals().

Длинный ответ

При работе с объектами-обёртками важно понимать, что именно сравнивается.

Сравнение через ==

Оператор ==:

  • сравнивает ссылки на объекты

  • проверяет, указывают ли они на один и тот же объект

Пример:

Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true (кеш)

Но:

Integer x = 1000;
Integer y = 1000;
System.out.println(x == y); // false

Сравнение через equals()

Метод equals():

  • сравнивает числовое значение

  • не зависит от кеширования

Пример:

Integer a = 1000;
Integer b = 1000;
System.out.println(a.equals(b)); // true

Почему возникает путаница

Причины:

  • автоупаковка (autoboxing)

  • кеширование объектов

  • неочевидное поведение ==

Вывод

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#integer

#wrapper

#equals

Подпишись на Java Developer в телеграм