Где хранится локальная переменная типа Integer в методе Java?

«Где хранится локальная переменная типа Integer в методе Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ссылка на объект Integer хранится в стеке (Stack Memory) внутри фрейма метода. Сам объект Integer (как и любой объект) размещается в куче (Heap Memory).

Ключевые детали:

  • Для локальных переменных-примитивов (например, int) значение хранится напрямую в стеке.
  • Для ссылочных типов (включая Integer) в стеке хранится только ссылка (адрес), указывающая на объект в куче.
  • Значения Integer в диапазоне от -128 до 127 кэшируются в пуле (IntegerCache), поэтому несколько ссылок могут указывать на один и тот же объект в куче.

Пример:

public void exampleMethod() {
    int primitive = 42;          // Значение 42 хранится прямо в стеке.
    Integer wrapper = 42;        // Ссылка хранится в стеке, объект Integer(42) — в куче.
    Integer anotherRef = 42;     // Может ссылаться на тот же кэшированный объект из пула.
}