Sobes.tech
Junior
97
questionbank

Как осуществляется преобразование ссылочных типов в примитивные и наоборот?

Answer from AI

sobes.tech AI

Преобразование между ссылочными (объектами классов-обёрток) и примитивными типами в Java называется автоупаковкой (autoboxing) и автораспаковкой (unboxing). Это автоматическое преобразование, выполняемое компилятором.

  1. Автоупаковка (Autoboxing): Преобразование примитивного типа в соответствующий ссылочный объект-обёртку.

    int primitiveInt = 10;
    Integer wrappedInt = primitiveInt; // Автоупаковка int в Integer
    
  2. Автораспаковка (Unboxing): Преобразование ссылочного объекта-обёртки в соответствующий примитивный тип.

    Integer wrappedInteger = 20;
    int primitiveInteger = wrappedInteger; // Автораспаковка Integer в int
    

Это удобно при работе с коллекциями, которые хранят только объекты:

import java.util.List;
import java.util.ArrayList;

// Объявление списка целых чисел
List<Integer> numbers = new ArrayList<>();

// Добавление примитивного int, выполняется автоупаковка
numbers.add(100); // Автоупаковка 100 (int) в Integer

// Получение элемента, выполняется автораспаковка
int firstNumber = numbers.get(0); // Автораспаковка Integer в int

Соответствие между примитивными типами и классами-обёртками:

Примитивный Тип Класс-Обёртка
boolean Boolean
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double

Важно помнить, что при автораспаковке null значения объекта-обёртки возникает NullPointerException.

Integer nullableInteger = null;
// int primitive = nullableInteger; // Вызовет NullPointerException при попытке автораспаковки null