Ответ
Ссылка на объект 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; // Может ссылаться на тот же кэшированный объект из пула.
}