Ответ
Примитивный тип 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 значительно эффективнее по памяти и производительности.
Ответ 18+ 🔞
Давай разберём эту хрень про int в Java, а то некоторые думают, что он, как хамелеон, размер меняет в зависимости от погоды. Нет, блядь!
Вот представь: int — это как стандартная кирпичная кладка, ёпта. Сколько бы ты ни строил — один кирпич, миллион или целый дворец из Integer.MAX_VALUE — каждый такой "кирпичик" всегда, сука, 4 байта (32 бита). Это железобетонное правило в Java, и ему похуй на то, какая у тебя операционка или JVM. Не зависит, блядь, ни от чего!
Смотри, как это выглядит в коде:
int a = 1; // 4 байта, иди нахуй
int b = 1_000_000; // тоже 4 байта, удивлён?
int c = Integer.MAX_VALUE; // 2^31 - 1, и всё равно 4 байта, пиздец!
// Каждая из этих переменных в стеке занимает ровно 4 байта, как ни крути.
А теперь где эта хуйня применяется:
- Локальные переменные и параметры методов: Живут в стеке. Каждая — плюс 4 байта к твоему стеку. Просто, как три копейки.
- Поля класса: Если у тебя в объекте есть поле
int, то объект потяжелеет ровно на 4 байта (ну, плюс-минус выравнивание, но это уже детали). - Массивы: Вот тут уже интереснее. Создаёшь
int[]— и данные идут сплошным блоком. Размер посчитать легко:12 байт (это заголовок массива, его не трогай) + 4 * length. Вот и вся магия.
И главное, блядь, сравнение с Integer: Это как сравнивать голый кирпич (int) и целый особняк с охраной (Integer). Обёртка Integer — это уже полноценный объект, ёпта, занимает около 16 байт! Тут тебе и заголовок объекта, и ссылка... Нахуй столько накладных расходов, если можно обойтись четырьмя байтами? Поэтому int — это огонь по эффективности, и по памяти, и по скорости. Не усложняй, где не надо!