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: Integeri stedet for intog Characteri stedet for char.
Alle objekter i indpakningsklasserne er uforanderlige ( uforanderlige ).
Forenklet kode for Integerklassen ser sådan ud:
| Kode | Bemærk |
|---|---|
|
Variable Constructor Metoden returnerer en værdi Den statiske metode opretter et nyt Integerobjekt for en intvariabel |
2. Konvertering af an inttil 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 wrapper-typer. Koden til konvertering fra en inttil en Integerog omvendt ville se sådan ud:
For at konvertere en inttil en Integer, skal du skrive denne kode:
Integer name = new Integer(value);
Hvor nameer navnet på en Integervariabel, og valueer den indpakkede intværdi.
Eksempler:
| Kode | Bemærk |
|---|---|
|
|
|
|
|
Og for at konvertere an Integertil en int, skal du skrive denne kode:
int name = variable.intValue();
Hvor nameer navnet på en intvariabel, og variableer en reference til et Integerobjekt.
Eksempler:
| Kode | Bemærk |
|---|---|
|
|
|
|
|
|
|
|
3. Autoboxing og unboxing
Men selv simple operationer med Integertypen er ikke nemme at skrive.
Som vi sagde tidligere, Integerer typen uforanderlig ( uforanderlig ). For at oprette et Integerobjekt med en ny intværdi, skal du udtrykkeligt oprette et nyt Integerobjekt. Når det er sagt, er det nemt at få værdien af et intgemt inde i et Integerobjekt - bare kald intValue()metoden.
Eksempel:
| Kode | Beskrivelse |
|---|---|
|
Indpak 5et Integerobjekt Få værdien fra objektet IntegerOpret et nyt Integerobjekt (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 inttil en Integerkaldes autoboxing (automatisk sætter værdien ind i en boks), og den omvendte handling (konvertering af an Integertil en int) kaldes unboxing .
| Din kode | Hvad compileren ser |
|---|---|
|
|
|
|
|
|
Takket være autoboxing og unboxing kan du sikkert tildele en inttil en Integervariabel og omvendt. Du kan skrive udtryk af enhver kompleksitet uden at skelne mellem typerne intog 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 Integerog en Integer, så er sammenligningen baseret på reference og ikke værdier.
| Kode | Konsoludgang |
|---|---|
|
|
|
|
Variablerne aog bgemmer ikke intvæ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