Ответ
Размеры примитивных типов в Java фиксированы и не зависят от платформы (JVM-спецификация). Это обеспечивает переносимость.
Таблица размеров:
| Тип | Размер | Диапазон значений |
|---|---|---|
byte |
1 байт | -128 ... 127 |
short |
2 байта | -32 768 ... 32 767 |
int |
4 байта | -2³¹ ... 2³¹-1 |
long |
8 байт | -2⁶³ ... 2⁶³-1 |
float |
4 байта | ~±3.4e-38F ... ~±3.4e+38F |
double |
8 байт | ~±1.7e-308 ... ~±1.7e+308 |
char |
2 байта | 0 ... 65 535 (беззнаковый, Unicode) |
boolean |
не определен | true/false (JVM использует int или byte) |
Практическая проверка:
Для числовых типов можно использовать константы *.BYTES из классов-обёрток:
System.out.println(Integer.BYTES); // 4
System.out.println(Double.BYTES); // 8
Важно: Размер гарантирован только для примитивов в массивах (byte[], int[]). Для локальных переменных JVM может применять оптимизации (например, размещение в регистрах процессора).