Каковы критерии примитивных типов данных в 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).

Ответ 18+ 🔞

А, примитивные типы в Java! Ну это ж классика, блядь, как Герасим с Муму! Сейчас разжуём, в чём тут соль, а то некоторые думают, что int и Integer — это одно и то же. Хуй там, на самом деле!

Смотри, есть у нас два лагеря, как в хорошем боевике: примитивы — это простые, работяги-одиночки, а ссылочные типы (объекты) — это уже целые конторы со своей бюрократией.

Вот тебе разбор полётов, почему примитивы — это отдельная каста, блядь:

Критерий Объяснение Пример/Следствие
Не являются объектами Это как голый кирпич, ёпта. Никаких методов у него нет, он в Object не вписан. int i = 5; // Попробуй у i вызвать .toString() — получишь пиздюлину от компилятора!
Хранят значение напрямую В переменной лежит само число, а не бумажка с адресом, где это число лежит в куче. Быстро, чётко, без лишней ебли с указателями. Прямо в регистр процессора засунуть можно.
Фиксированный размер в памяти Размер прописан в стандарте, и он везде одинаковый. Не зависит от того, на каком ты компе сидишь. int — всегда 4 байта, хоть в Африке, хоть в Сибири. boolean — это вообще отдельная песня, там под капотом может и бит один быть, но точно не скажешь.
Значение по умолчанию Если ты в классе объявил поле и не проинициализировал — компилятор сам за тебя нулики подставит. Но локальную переменную в методе — инициализируй сам, а то получишь по ебалу! Поле класса: int count; станет 0. В методе: int x; System.out.println(x); — это прямой билет в ошибку компиляции, ядрёна вошь!
Не могут быть null Они либо число, либо не число, но пустоты в них нет. Хочешь обозначить "значение отсутствует"? Придётся брать его старшего брата — класс-обёртку Integer. Вот он уже может быть null, сука.

Вот они, красавцы, все в сборе:

byte b = 100;     // Маленький, 1 байт
short s = 1000;   // Чуть побольше, 2 байта
int i = 100000;   // Рабочая лошадка, 4 байта, его везде используют
long l = 100L;    // Долговязый, 8 байт, для самых больших чисел
float f = 3.14f;  // Плавающая точка, 4 байта, но с буквой 'f' в конце!
double d = 3.14;  // Точность двойная, 8 байт, его чаще юзают
char c = 'A';     // Символ, 2 байта, для букв и иероглифов
boolean flag = true; // Ну тут всё ясно, правда или ложь

Про обёртки: Запомни раз и навсегда, чувак. Если у тебя тяжёлые вычисления в цикле на миллион итераций — юзай int. Потому что Integer — это уже объект, его создавать, память под него выделять... Это овердохуища накладных расходов! Автоупаковка и распаковка (boxing/unboxing) — они тихие, но жрут производительность, если их бездумно применять. Так что думай головой, что тебе нужно: скорость и простота или возможность null и методы.