Каковы критерии примитивных типов данных в Java?

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

Ответ

Примитивные типы (primitive types) в Java отличаются от ссылочных типов (объектов) по следующим ключевым критериям:

Критерий Объяснение Пример/Следствие
Не являются объектами Не имеют методов, не наследуют java.lang.Object. int i = 5; // У i нет методов типа .toString()
Хранят значение напрямую В переменной хранится само значение, а не ссылка на объект в куче (Heap). Эффективно по памяти и скорости доступа.
Фиксированный размер в памяти Размер определён языком и не зависит от платформы. int – 4 байта, long – 8 байт, boolean – ~1 бит (точно не специфицировано).
Значение по умолчанию Инициализируются, если не задано явно. Для локальных переменных — обязательна явная инициализация. Поля класса: int0, booleanfalse. Локальная переменная: int x; // Ошибка компиляции
Не могут быть null Могут содержать только значения из своего диапазона. Для представления "отсутствия значения" используют классы-обёртки (Integer).

Примеры примитивных типов:

byte b = 100;     // 1 байт, целое
short s = 1000;   // 2 байта, целое
int i = 100000;   // 4 байта, целое (наиболее распространён)
long l = 100L;    // 8 байт, целое
float f = 3.14f;  // 4 байта, с плавающей точкой
double d = 3.14;  // 8 байт, с плавающей точкой (наиболее распространён)
char c = 'A';     // 2 байта, символ Unicode
boolean flag = true; // логическое значение

Сравнение с обёртками: Использование int вместо Integer предпочтительнее в циклах и вычислениях из-за отсутствия накладных расходов на создание объекта и автоупаковку/распаковку (boxing/unboxing).