1. Liste over innpakningstyper
Du vet at Java har 8 primitive typer, som er typer som ikke er klasser. På den ene siden er dette bra - de er enkle og tar liten plass. På den annen side, noen ganger er timene akkurat det vi trenger. Du vil finne ut nøyaktig hvorfor det er i neste leksjon.
Så hva kan gjøres?
Fra og med den femte versjonen av Java, fikk hver primitiv type en tvillingklasse. Hver slik klasse lagrer et enkelt felt med en verdi av en bestemt type. Disse klassene kalles wrapper-typer , fordi de pakker inn primitive verdier i klasser.
Her er en liste over disse typene. Vet du om noen?
Primitiv type | Innpakningsklasse |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Navnene på primitive typer starter med en liten bokstav, men navnene på omslagsklassene starter med en stor bokstav. Noen av klassenavnene er også litt lengre: Integer
instead of int
и Character
instead of char
.
Alle objekter i wrapper-klassene er uforanderlige ( uforanderlige ).
Forenklet kode for Integer
klassen ser omtrent slik ut:
Kode | Merk |
---|---|
|
Variabel Konstruktør Metoden returnerer en verdi Den statiske metoden oppretter et nytt Integer objekt for en int variabel |
2. Konvertere an int
til anInteger
Innpakningstyper regnes som motstykker til sine primitive søsken: du kan enkelt lage et innpakningsobjekt som tilsvarer en primitiv type.
La oss bruke int-typen som et eksempel for å analysere hvordan primitive typer samhandler med deres tilsvarende innpakningstyper. Koden for å konvertere fra en int
til en Integer
og omvendt vil se slik ut:
For å konvertere en int
til en Integer
, må du skrive denne koden:
Integer name = new Integer(value);
Hvor name
er navnet på en Integer
variabel, og value
er den innpakkede int
verdien.
Eksempler:
Kode | Merk |
---|---|
|
|
|
|
|
Og for å konvertere an Integer
til en int
må du skrive denne koden:
int name = variable.intValue();
Hvor name
er navnet på en int
variabel, og variable
er en referanse til et Integer
objekt.
Eksempler:
Kode | Merk |
---|---|
|
|
|
|
|
|
|
|
3. Autoboksing og unboxing
Men selv enkle operasjoner med Integer
typen er ikke lett å skrive.
Som vi sa tidligere, Integer
er typen uforanderlig ( uforanderlig ). For å lage et Integer
objekt med en ny int
verdi, må du eksplisitt opprette et nytt Integer
objekt. Når det er sagt, er det enkelt å få verdien av et int
lagret inne i et Integer
objekt - bare kall intValue()
metoden.
Eksempel:
Kode | Beskrivelse |
---|---|
|
Pakk 5 inn et Integer objekt Få verdien fra Integer objektet Opprett et nytt Integer objekt (lik 10) |
Dette er ganske tungvint kode, synes du ikke?
Javas skapere trodde det, så de lærte kompilatoren hvordan disse operasjonene skulle utføres automatisk. Den automatiske konverteringen av an int
til an Integer
kalles autoboxing (automatisk sette verdien inn i en boks), og den omvendte operasjonen (konvertere an Integer
til en int
) kalles unboxing .
Din kode | Hva kompilatoren ser |
---|---|
|
|
|
|
|
|
Takket være autoboxing og unboxing kan du trygt tilordne en int
til en Integer
variabel og omvendt. Du kan skrive uttrykk av enhver kompleksitet uten å skille mellom typene int
og Integer
.
Eksempler:
Kode | Hva kompilatoren vil generere |
---|---|
|
|
|
|
4. Sammenligne innpakningsvariabler
Autoboxing og unboxing er enkle og transparente prosesser. Vi bruker new Integer()
utsagn etter behov, og vi kaller intValue()
metoden etter behov.
Alt fungerer fint og enkelt for deg, programmereren. Vær oppmerksom på at hvis du sammenligner en Integer
og en Integer
, så er sammenligningen basert på referanse og ikke verdier.
Kode | Konsollutgang |
---|---|
|
|
|
|
Variablene a
og b
lagrer ikke int
verdier. De lagrer referanser til objekter. Det betyr at det er viktig å huske hvordan du sammenligner dem riktig:
Feil | Ikke sant |
---|---|
|
|
GO TO FULL VERSION