CodeGym /Kurs Javy /Wielowątkowość w Java /Autoboxing (niezmienne)

Autoboxing (niezmienne)

Wielowątkowość w Java
Poziom 9 , Lekcja 3
Dostępny
Autoboxing (niezmienne) - 1

"Cześć, Amigo!"

„Dzisiaj opowiem o autoboxingu . AutoBoxing oznacza automatyczne wkładanie czegoś do pudełka.”

„Przypomnij sobie, że Java ma typy, które dziedziczą klasę Object, a także typy pierwotne. Okazuje się jednak, że wygodne rzeczy, takie jak kolekcje i generyczne, działają tylko z typami, które dziedziczą klasę Object”.

„Wtedy podjęto decyzję o stworzeniu nieprymitywnego odpowiednika każdego prymitywnego typu”.

Typ pierwotny Nieprymitywny odpowiednik
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
void Void

„Ale ciągłe przełączanie między tymi typami jest bardzo niewygodne:”

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

„Zwłaszcza podczas bezpośredniej pracy z kolekcjami:”

Przykład
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

„Dlatego twórcy Javy wymyślili «autoboxing» prymitywnych typów ich i„ unboxing ”do ich nieprymitywnych odpowiedników”.

"Oto jak to działa:

Co widzisz Co naprawdę się dzieje
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

„To wszystko jest proste. Możesz przypisać sobie typy int i Integer, a kompilator zajmie się całą resztą”.

„To bardzo wygodne”.

– Tak. Ale są pewne niuanse, o których opowiem później.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION