Java Academy · Lektion

Primitive typer kontra wrapper-typer

Integer, Double, Boolean og flere

Lektion 1 af 413 trin

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, long til heltal
  • float, double til decimaltal
  • char til et enkelt tegn
  • boolean til 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:

  • int bliver til Integer
  • char bliver til Character
  • boolean bliver til Boolean, double bliver 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 Integer og Double
  • Wrappere er objekter, kan være null og 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
Gratis at komme i gang

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

  1. Primitive typer kontra wrapper-typer
  2. Autoboxing og unboxing
  3. Parsing og Valueof
  4. Faldgruber ved autoboxing
← Tilbage til Java Academy