Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что происходит в памяти JVM при объявлении Integer j = 1000?

Этот вопрос проверяет понимание автоупаковки, heap-памяти и кэша обёрток.

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

Переменная j — это ссылка, которая хранится в стеке.
Сам объект Integer создаётся в heap.
Значение 1000 не попадает в Integer Cache, поэтому создаётся новый объект.
Каждый такой Integer(1000) — отдельный объект.
Это может влиять на сравнение по == и на память.

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

Здесь важно отличать примитив от объекта-обёртки.

Определение

Integer — это объект-обёртка над примитивом int, который хранится в heap.

Что делает JVM

При выполнении:

Integer j = 1000;

JVM выполняет автоупаковку:

Integer j = Integer.valueOf(1000);

Дальнейшие шаги:

  • Ссылка j создаётся в stack

  • Объект Integer создаётся в heap

  • В объекте хранится значение 1000

Integer Cache

JVM кэширует значения Integer в диапазоне:

  • от -128 до 127

Пример:

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

Integer c = 1000;
Integer d = 1000;
System.out.println(c == d); // false

Причина:

  • 100 берётся из кэша

  • 1000 создаёт новый объект

Последствия

  • == сравнивает ссылки, а не значения

  • Возможен перерасход памяти

  • GC должен обрабатывать больше объектов

Вывод

Объекты-обёртки создаются в heap и требуют аккуратного обращения, особенно при сравнении и массовом использовании.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Java

    Java

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

#wrapper

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