1. Lista tipurilor de ambalaje
Știți că Java are 8 tipuri primitive, care sunt tipuri care nu sunt clase. Pe de o parte, acest lucru este bun - sunt simple și ocupă puțin spațiu. Pe de altă parte, uneori, orele sunt exact ceea ce avem nevoie. Veți afla exact de ce se întâmplă asta în lecția următoare.
Deci ce se poate face?
Începând cu cea de-a cincea versiune de Java, fiecare tip primitiv a câștigat o clasă dublă. Fiecare astfel de clasă stochează un singur câmp cu o valoare de un anumit tip. Aceste clase sunt numite tipuri de wrapper , deoarece încapăsează valorile primitive în clase.
Iată o listă cu aceste tipuri. Stii vreunul?
Tipul primitiv | Clasa Wrapper |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Numele tipurilor primitive încep cu o literă mică, dar numele claselor de wrapper încep cu o literă mare. Unele dintre numele claselor sunt, de asemenea, puțin mai lungi: Integer
instead of int
и Character
instead of char
.
Toate obiectele claselor wrapper sunt neschimbabile ( imuabile ).
Codul simplificat pentru Integer
clasă arată cam așa:
Cod | Notă |
---|---|
|
Constructor de variabile Metoda returnează o valoare Metoda statică creează un nou Integer obiect pentru o int variabilă |
2. Transformarea unui int
în anInteger
Tipurile de wrapper sunt considerate omologi ale fraților lor primitivi: puteți crea cu ușurință un obiect wrapper care corespunde unui tip primitiv.
Să folosim tipul int ca exemplu pentru a analiza modul în care tipurile primitive interacționează cu tipurile lor de wrapper corespunzătoare. Codul pentru conversia de la an int
la an Integer
și invers ar arăta astfel:
Pentru a converti un int
într-un Integer
, trebuie să scrieți acest cod:
Integer name = new Integer(value);
Unde name
este numele unei Integer
variabile și value
este valoarea încapsulată int
.
Exemple:
Cod | Notă |
---|---|
|
|
|
|
|
Și pentru a converti an Integer
în an int
, trebuie să scrieți acest cod:
int name = variable.intValue();
Unde name
este numele unei int
variabile și variable
este o referință la un Integer
obiect.
Exemple:
Cod | Notă |
---|---|
|
|
|
|
|
|
|
|
3. Autoboxing și unboxing
Dar nici operațiunile simple cu Integer
tipul nu sunt ușor de scris.
După cum am spus anterior, Integer
tipul este neschimbabil ( imuabil ). Pentru a crea un Integer
obiect cu o nouă int
valoare, trebuie să creați în mod explicit un nou Integer
obiect. Acestea fiind spuse, este ușor să obțineți valoarea unui obiect int
stocat în interiorul unui Integer
obiect - doar apelați intValue()
metoda.
Exemplu:
Cod | Descriere |
---|---|
|
Înfășurare 5 într-un Integer obiect Obțineți valoarea din Integer obiect Creați un obiect nou Integer (egal cu 10) |
Acesta este un cod destul de greoi, nu crezi?
Creatorii Java au crezut așa, așa că au învățat compilatorul cum să facă aceste operațiuni automat. Conversia automată a unui an int
în an Integer
se numește autoboxing (introducerea automată a valorii într-o casetă), iar operația inversă (conversia unui an Integer
în an int
) se numește unboxing .
Codul tau | Ce vede compilatorul |
---|---|
|
|
|
|
|
|
Datorită autoboxing și unboxing, puteți atribui în siguranță int
o Integer
variabilă și invers. Puteți scrie expresii de orice complexitate fără a face o distincție între int
și Integer
tipuri.
Exemple:
Cod | Ce va genera compilatorul |
---|---|
|
|
|
|
4. Compararea variabilelor wrapperului
Autoboxing și unboxing sunt procese simple și transparente. Folosim new Integer()
instrucțiuni după cum este necesar și numim intValue()
metoda după cum este necesar.
Totul funcționează frumos și ușor pentru tine, programatorul. Rețineți că, dacă comparați un Integer
și un Integer
, atunci comparația se bazează pe referință și nu pe valori.
Cod | Ieșire de consolă |
---|---|
|
|
|
|
Variabilele a
și b
nu stochează int
valori. Ele stochează referințe la obiecte. Aceasta înseamnă că este important să ne amintim cum să le comparăm corect:
Gresit | Dreapta |
---|---|
|
|
GO TO FULL VERSION