Primitive typer kontra wrapper-typer
Integer, Double, Boolean og flere
Primitive typer kontra wrapper-typer er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
To værdiers verdener
Java har primitive typer som int, double og boolean, der indeholder rå værdier direkte. Java har også wrapperklasser som Integer, Double og Boolean, der pakker disse værdier ind i objekter.
Primitive typer er hurtige og fylder lidt. Wrappere er fuldgyldige objekter, der kan ligge i samlinger og kan være null.
De otte primitive typer
Java definerer præcis otte primitive typer:
byte,short,int,longtil heltalfloat,doubletil decimaltalchartil et enkelt tegnbooleantil sand/falsk
Hver type har en tilsvarende wrapperklasse i pakken java.lang.
Tilsvarende wrappernavne
De fleste wrappernavne får blot stort begyndelsesbogstav fra den primitive type, men to er anderledes:
intbliver til Integercharbliver til Characterbooleanbliver til Boolean,doublebliver til Double og så videre
Lad os udskrive nogle få wrappere.
public class Main {
public static void main(String[] args) {
Integer count = 42;
Double price = 9.99;
Boolean active = true;
Character grade = 'A';
System.out.println(count);
System.out.println(price);
System.out.println(active);
System.out.println(grade);
}
}Wrappere er objekter
En primitiv type indeholder en værdi. En wrapper er en objektreference, så den kan pege på ingenting med null.
Det gør wrappere nyttige, når en værdi kan mangle, for eksempel i en databasekolonne, der tillader NULL.
public class Main {
public static void main(String[] args) {
Integer missing = null;
int present = 5;
System.out.println(missing);
System.out.println(present);
}
}Nyttige konstanter
Wrapperklasser stiller praktiske konstanter til rådighed. Integer.MAX_VALUE og Integer.MIN_VALUE angiver de største og mindste int-værdier.
Det er langt nemmere end selv at huske tallene.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
}Hjælpemetoder
Wrapperklasser er også værktøjskasser med statiske hjælpemetoder. Integer.toBinaryString viser for eksempel et tal i grundtal 2, og Integer.max returnerer den største af to værdier.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(10));
System.out.println(Integer.max(7, 3));
System.out.println(Integer.toHexString(255));
}
}Hvorfor samlinger har brug for wrappere
Javas generiske typer fungerer kun med objekter, ikke med primitive typer. Du kan ikke skrive List<int>.
I stedet bruger du List<Integer>. Wrapperen får den primitive værdi til at passe ind i den objektverden, som samlinger kræver.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
System.out.println(numbers);
}
}Sammenligning af wrapperværdier
Hvis du vil sammenligne talværdien inde i to wrappere, skal du bruge .equals() eller .compareTo(), ikke matematiske operatorer direkte på objekterne.
compareTo returnerer et negativt tal, nul eller et positivt tal.
public class Main {
public static void main(String[] args) {
Integer a = 100;
Integer b = 200;
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));
}
}Hukommelse og ydeevne
Primitive typer bruger mindre hukommelse og kører hurtigere, fordi der ikke er noget objekt-overhead. En enkelt int er blot 4 bytes rå data.
Et wrapperobjekt indeholder ekstra headerinformation. I stramme løkker over millioner af værdier bør du foretrække primitive typer.
Standardværdier er forskellige
Et ikke-initialiseret felt med en primitiv type får som standard en nul-lignende værdi: int er 0, og boolean er false.
Et ikke-initialiseret wrapperfelt får som standard null. Denne forskel er vigtig, når du senere forsøger at bruge værdien.
public class Main {
static int primitiveField;
static Integer wrapperField;
public static void main(String[] args) {
System.out.println(primitiveField);
System.out.println(wrapperField);
}
}Vælg mellem dem
En enkel regel: Brug som udgangspunkt primitive typer for at opnå bedre ydeevne og tydelighed. Skift til en wrapper, når du har brug for et element i en samling, en generisk type eller muligheden for at repræsentere en manglende værdi med null.
Hurtig kontrol
Test din forståelse af primitive typer og wrappere.
Opsummering
Du har lært forskellen mellem primitive typer og wrappere:
- Otte primitive typer svarer til otte wrapperklasser som
IntegerogDouble - Wrappere er objekter, kan være
nullog kan bruges i samlinger - Primitive typer er hurtigere og fylder mindre, så brug dem som udgangspunkt
- Wrapperklasser stiller også nyttige konstanter og hjælpemetoder til rådighed
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “Primitive typer kontra wrapper-typer” gratis?
Ja — hele teksten til “Primitive typer kontra wrapper-typer” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Primitive typer kontra wrapper-typer”?
Integer, Double, Boolean og flere Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Primitive typer kontra wrapper-typer”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Primitive typer kontra wrapper-typer
- Autoboxing og unboxing
- Parsing og Valueof
- Faldgruber ved autoboxing