Автораспаковка
Автораспаковка (unboxing) в Java - это автоматическое
преобразование объекта класса-обёртки (например,
Integer, Double, Boolean) в
соответствующий примитивный тип (например, int,
double, boolean). Компилятор сам вызывает
метод intValue, doubleValue,
booleanValue и тому подобные, когда это необходимо.
Автораспаковка выполняется автоматически в выражениях,
при присваивании примитивной переменной, при передаче
аргумента в метод, ожидающий примитив, а также при
арифметических операциях. Обратный процесс называется
автоупаковкой.
Синтаксис
Integer obj = 123;
int num = obj;
Пример
Давайте распакуем объект Integer в примитив
int при присваивании:
public class Main
{
public static void main(String[] args)
{
Integer obj = 123;
int num = obj;
System.out.println(num);
}
}
Результат выполнения кода:
123
Пример
Давайте выполним арифметическую операцию с объектом
Integer. Компилятор автоматически распакует его
в примитив:
public class Main
{
public static void main(String[] args)
{
Integer obj = 123;
int res = obj + 5;
System.out.println(res);
}
}
Результат выполнения кода:
128
Пример
Давайте передадим объект Double в метод, который
принимает примитив double:
public class Main
{
public static void printDouble(double value)
{
System.out.println(value);
}
public static void main(String[] args)
{
Double obj = 12.34;
printDouble(obj);
}
}
Результат выполнения кода:
12.34
Пример
Давайте распакуем объект Boolean в примитив
boolean и используем его в условии:
public class Main
{
public static void main(String[] args)
{
Boolean obj = true;
boolean flag = obj;
if (flag) {
System.out.println("abcde");
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте посмотрим, что произойдёт при попытке
распаковать объект Integer со значением
null:
public class Main
{
public static void main(String[] args)
{
Integer obj = null;
int num = obj;
System.out.println(num);
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.NullPointerException