1. Liste over indpakningstyper
Du ved, at Java har 8 primitive typer, som er typer, der ikke er klasser. På den ene side er det godt - de er enkle og fylder lidt. På den anden side er undervisning nogle gange lige, hvad vi har brug for. Du vil finde ud af præcis hvorfor det er i næste lektion.
Så hvad kan man gøre?
Fra den femte version af Java fik hver primitiv type en tvillingklasse. Hver sådan klasse gemmer et enkelt felt med en værdi af en bestemt type. Disse klasser kaldes wrapper-typer , fordi de ombryder primitive værdier i klasser.
Her er en liste over disse typer. Kender du nogen?
Primitiv type | Indpakningsklasse |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Navnene på primitive typer starter med et lille bogstav, men navnene på indpakningsklasserne starter med et stort bogstav. Nogle af klassenavnene er også lidt længere: Integer
instead of int
и Character
instead of char
.
Alle objekter i indpakningsklasserne er uforanderlige ( uforanderlige ).
Forenklet kode for Integer
klassen ser sådan ud:
Kode | Bemærk |
---|---|
|
Variable Constructor Metoden returnerer en værdi Den statiske metode opretter et nyt Integer objekt for en int variabel |
2. Konvertering af an int
til anInteger
Indpakningstyper betragtes som modstykker til deres primitive søskende: du kan nemt oprette et indpakningsobjekt, der svarer til en primitiv type.
Lad os bruge int-typen som et eksempel til at analysere, hvordan primitive typer interagerer med deres tilsvarende indpakningstyper. Koden til at konvertere fra en int
til en Integer
og omvendt ville se sådan ud:
For at konvertere en int
til en Integer
, skal du skrive denne kode:
Integer name = new Integer(value);
Hvor name
er navnet på en Integer
variabel, og value
er den indpakkede int
værdi.
Eksempler:
Kode | Bemærk |
---|---|
|
|
|
|
|
Og for at konvertere an Integer
til en int
, skal du skrive denne kode:
int name = variable.intValue();
Hvor name
er navnet på en int
variabel, og variable
er en reference til et Integer
objekt.
Eksempler:
Kode | Bemærk |
---|---|
|
|
|
|
|
|
|
|
3. Autoboxing og unboxing
Men selv simple operationer med Integer
typen er ikke nemme at skrive.
Som vi sagde tidligere, Integer
er typen uforanderlig ( uforanderlig ). For at oprette et Integer
objekt med en ny int
værdi, skal du udtrykkeligt oprette et nyt Integer
objekt. Når det er sagt, er det nemt at få værdien af et int
gemt inde i et Integer
objekt - bare kald intValue()
metoden.
Eksempel:
Kode | Beskrivelse |
---|---|
|
Indpak 5 et Integer objekt Få værdien fra objektet Integer Opret et nyt Integer objekt (lig med 10) |
Det er ret besværlig kode, synes du ikke?
Det troede Javas skabere, så de lærte compileren, hvordan man udfører disse operationer automatisk. Den automatiske konvertering af en int
til en Integer
kaldes autoboxing (automatisk sætter værdien ind i en boks), og den omvendte handling (konvertering af an Integer
til en int
) kaldes unboxing .
Din kode | Hvad compileren ser |
---|---|
|
|
|
|
|
|
Takket være autoboxing og unboxing kan du sikkert tildele en int
til en Integer
variabel og omvendt. Du kan skrive udtryk af enhver kompleksitet uden at skelne mellem typerne int
og Integer
.
Eksempler:
Kode | Hvad compileren vil generere |
---|---|
|
|
|
|
4. Sammenligning af indpakningsvariabler
Autoboxing og unboxing er enkle og gennemsigtige processer. Vi bruger new Integer()
udsagn efter behov, og vi kalder intValue()
metoden efter behov.
Alt fungerer fint og nemt for dig, programmøren. Vær opmærksom på, at hvis du sammenligner en Integer
og en Integer
, så er sammenligningen baseret på reference og ikke værdier.
Kode | Konsoludgang |
---|---|
|
|
|
|
Variablerne a
og b
gemmer ikke int
værdier. De gemmer referencer til objekter. Det betyder, at det er vigtigt at huske, hvordan man sammenligner dem korrekt:
Forkert | Højre |
---|---|
|
|
GO TO FULL VERSION