Ответ
Примитивные типы (primitive types) в Java отличаются от ссылочных типов (объектов) по следующим ключевым критериям:
| Критерий | Объяснение | Пример/Следствие |
|---|---|---|
| Не являются объектами | Не имеют методов, не наследуют java.lang.Object. |
int i = 5; // У i нет методов типа .toString() |
| Хранят значение напрямую | В переменной хранится само значение, а не ссылка на объект в куче (Heap). | Эффективно по памяти и скорости доступа. |
| Фиксированный размер в памяти | Размер определён языком и не зависит от платформы. | int – 4 байта, long – 8 байт, boolean – ~1 бит (точно не специфицировано). |
| Значение по умолчанию | Инициализируются, если не задано явно. Для локальных переменных — обязательна явная инициализация. | Поля класса: int → 0, boolean → false. Локальная переменная: 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).