Какой размер в памяти у примитивного типа `byte` в Java?

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

Ответ

Примитивный тип byte в Java всегда занимает 8 бит (1 байт) памяти.

Ключевые характеристики:

  • Размер: Фиксирован, не зависит от операционной системы или архитектуры процессора (в отличие от C/C++).
  • Диапазон значений: От -128 до 127 (включительно). Это соответствует -2⁷ до 2⁷ - 1.
  • Назначение: Экономия памяти при работе с большими массивами чисел, чтении/записи бинарных данных (потоки, файлы).

Примеры и важные замечания:

byte correct = 100;          // OK
byte max = 127;              // OK, верхняя граница
byte min = -128;             // OK, нижняя граница

// byte error = 128;         // Ошибка компиляции: несовместимые типы.
// byte anotherError = -129; // Ошибка компиляции: несовместимые типы.

// При арифметических операциях byte неявно приводится к int:
byte a = 10;
byte b = 20;
// byte c = a + b; // Ошибка! Результат a + b имеет тип int.
byte c = (byte) (a + b); // Необходимо явное приведение.

Почему именно такой диапазон? byte — знаковый целочисленный тип. Старший бит используется как знаковый, оставляя 7 бит для значения, что дает 2⁷ = 128 возможных значений для положительной и отрицательной сторон.