Назад к вопросам
Junior
73
questionbank

Как переводить ссылочные типы в примитивные и наоборот?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

Из ссылочного в примитивный (разворачивание, unboxing):

  • Присвоение объекта-обертки переменной примитивного типа. Java автоматически выполняет разворачивание.
  • Использование методов xxxValue() (например, intValue(), longValue(), booleanValue() и т.д.) соответствующего класса-обертки.
// Автоматическое разворачивание
Integer wrapperInt = 10;
int primitiveInt = wrapperInt;

// Использование метода xxxValue()
Double wrapperDouble = 15.5;
double primitiveDouble = wrapperDouble.doubleValue();

Из примитивного в ссылочный (упаковка, boxing):

  • Присвоение примитивной переменной переменной ссылочного типа-обертки. Java автоматически выполняет упаковку.
  • Использование конструктора класса-обертки.
  • Использование статических методов valueOf() (например, Integer.valueOf(), Boolean.valueOf() и т.д.) соответствующего класса-обертки. Статические методы valueOf() предпочтительнее конструкторов, так как они могут использовать кеширование, что улучшает производительность.
// Автоматическая упаковка
int primitiveInt = 20;
Integer wrapperInt = primitiveInt;

// Использование конструктора (менее предпочтительно)
double primitiveDouble = 25.6;
Double wrapperDoubleConstructor = new Double(primitiveDouble);

// Использование статического метода valueOf() (предпочтительно)
boolean primitiveBoolean = true;
Boolean wrapperBooleanValueOf = Boolean.valueOf(primitiveBoolean);

Таблица соответствия:

Примитивный тип Ссылочный тип
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

Автоматическая упаковка и разворачивание (autoboxing/unboxing) упрощают код, но могут привести к ошибкам NullPointerException, если попытаться развернуть null ссылочного типа в примитивный.