Autoboxing (неизменни) - 1

„Здрасти, Амиго!“

„Днес ще разкажа за автобоксиране . Автобоксиране означава автоматично поставяне на нещо в кутия.“

„Сигурно си спомняте, че Java има типове, които наследяват класа Object, Howто и примитивни типове. Но се оказва, че удобни неща като колекции и генерични файлове работят само с типове, които наследяват Object.“

„Тогава беше взето решение да се направи непримитивен аналог на всеки примитивен тип.“

Примитивен тип Непримитивен двойник
byte Байт
къс Къс
вътр Цяло число
дълго Дълги
плавам Поплавък
двойно Двойна
булево Булева стойност
въглен Характер
невалиден Празнота

„Но е супер неудобно да конвертирате между тези типове през цялото време:“

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

„Особено когато работите директно с колекции:“

Пример
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

„Ето защо създателите на Java измислиха „автобоксиране“ на техните примитивни типове и „разопаковане“ на техните не-примитивни двойници.“

„Ето How работи:

Какво виждаш Какво наистина се случва
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

„Всичко е просто. Можете да присвоите типове int и Integer един към друг, а компилаторът се грижи за всичко останало.“

— Това е много удобно.

"Да. Но има нюанси, за които ще говоря по-късно."