Ответ
Примитивный тип int в Java всегда занимает 4 байта (32 бита). Этот размер фиксирован спецификацией языка Java и не зависит от операционной системы или разрядности JVM.
Пример:
int a = 1;
int b = 1_000_000;
int c = Integer.MAX_VALUE; // 2^31 - 1
// Каждая из этих переменных занимает в стеке ровно 4 байта.
Контекст использования:
- Локальные переменные и параметры методов: Хранятся в стеке, по 4 байта на каждую.
- Поля класса: Если поле
intявляется частью объекта, оно добавляет к его размеру 4 байта (плюс возможное выравнивание). - Массивы: В массиве
int[]данные хранятся непрерывным блоком. Размер массива вычисляется как:12 байт (заголовок массива) + 4 * length.
Сравнение с Integer: Ключевое отличие от объекта-обертки Integer (который занимает ~16 байт) — отсутствие накладных расходов на заголовок объекта и необходимость в ссылке. Поэтому int значительно эффективнее по памяти и производительности.