Sobes.tech
Junior
101
questionbank

В чем разница между объектом и примитивом в Java?

Answer from AI

sobes.tech AI

В Java сущности можно разделить на две категории: примитивные типы данных и ссылочные типы (объекты).

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

  • Хранят само значение данных в памяти.
  • Имеют фиксированный размер в памяти.
  • Не могут быть равны null.
  • Восемь встроенных примитивных типов:
    • byte (целочисленный)
    • short (целочисленный)
    • int (целочисленный, наиболее часто используемый)
    • long (целочисленный)
    • float (с плавающей точкой одинарной точности)
    • double (с плавающей точкой двойной точности, наиболее часто используемый)
    • boolean (логический)
    • char (символьный)

Объекты:

  • Представляют собой экземпляры классов.
  • Хранят ссылки на данные, а не само значение. Данные хранятся в хипе.
  • Имеют переменный размер в памяти (зависит от содержимого объекта).
  • Могут быть равны null, что означает отсутствие ссылки на объект в памяти.
  • Объекты имеют методы и поля (данные).
  • Создаются с помощью ключевого слова new (за исключением строк, созданных литералом).

Сравнение:

Характеристика Примитив Объект
Хранение данных Само значение Ссылка на значение (в хипе)
Размер в памяти Фиксированный Переменный
Возможность null Нет Да
Методы и поля Нет Да
Создание Объявление (например, int x;) С помощью new (явное или неявное)
Передача в методы По значению (копия значения) По ссылке (копия ссылки, объект один)

Пример:

// Примитив: переменная 'a' хранит само значение 10
int a = 10;

// Объект: переменная 'str' хранит ссылку на объект String в хипе
String str = new String("Hello");

// Примитив не может быть null
// int b = null; // Компиляционная ошибка

// Объект может быть null
String nullStr = null;