Что такое примитивные типы в Java

Ответ

Примитивные типы в Java — это базовые типы данных, которые хранят значения напрямую, а не через ссылки. Они не являются объектами и не имеют методов.

8 примитивных типов:

  • byte (8 бит), short (16 бит), int (32 бит), long (64 бит) — целые числа
  • float (32 бит), double (64 бит) — числа с плавающей точкой
  • char (16 бит) — символ Unicode
  • boolean (JVM-зависимый) — true/false

Особенности:

  • Работают быстрее, чем объекты (Integer, Double и т.д.)
  • Имеют значения по умолчанию (например, int0, booleanfalse)
  • Автоматически упаковываются (autoboxing) в объекты при необходимости

Пример:

int number = 42;          // Примитив
Integer boxed = number;   // Автоупаковка (autoboxing)

Ответ 18+ 🔞

А, ну вот, опять эти примитивные типы, ебать мои старые костыли! Сидишь такой, пишешь код, а тут — бац — и вспоминаешь, что в Java, оказывается, не всё объекты, есть ещё какая-то древняя магия под капотом.

Короче, слушай сюда. Есть в Java такие базовые штуки, как примитивные типы. Это не объекты, ёпта. Это как бы голые значения, которые тупо лежат в памяти, без всяких там ссылок, методов и прочего овердохуища сложностей. Просто число, символ или флаг «да/нет». И всё.

Их всего восемь, запомнить не проблема, если не пить с утра:

  • byte, short, int, long — это всё для целых чисел, просто размер памяти под них разный, от крошечного byte до здоровенного long.
  • float и double — для чисел с запятой, которые плавают. double точнее, но и места жрёт больше.
  • char — для одного символа, типа буквы.
  • boolean — ну, тут всё ясно, true или false. Хотя, блядь, размер его под капотом — это отдельная песня, зависит от JVM.

В чём их фишка, спросишь? А фишка в том, что они быстрые, сука! Работать с ними — одно удовольствие для процессора, потому что не надо лазить по ссылкам и разворачивать объекты. Плюс у них есть значения по умолчанию. Объявил int count; и всё, там уже ноль сидит, не null. С объектами-то обломаешься — null везде, а тут — порядок.

Но жизнь не сахар, и иногда этим примитивам приходится притворяться объектами. Например, когда суёшь их в ArrayList, который с объектами только и работает. Вот тут Java включает режим «автоупаковки» (autoboxing). Она берёт твой голый int, запихивает его в красивую обёртку Integer — и вуаля, уже можно в коллекцию. А когда достаёшь обратно — сама же и распаковывает. Удобно, конечно, но за удобство, как водится, платишь производительностью, чувак.

Вот смотри, как это выглядит в коде, тут всё просто:

int number = 42;          // Всё, примитив. Быстро и сердито.
Integer boxed = number;   // А тут Java сама сделала autoboxing. Завернула примитив в объект.

Вот и вся история. Не объекты, а так, фундамент, на котором всё держится. Быстро, дёшево, но без наворотов. Иногда — именно то, что нужно.