1. Liste der Wrapper-Typen
Sie wissen, dass Java über 8 primitive Typen verfügt, bei denen es sich um Typen handelt, die keine Klassen sind. Das ist einerseits gut – sie sind einfach und nehmen wenig Platz ein. Andererseits sind Kurse manchmal genau das, was wir brauchen. Warum das genau so ist, erfahren Sie in der nächsten Lektion.
Was kann also getan werden?
Ab der fünften Java-Version erhielt jeder primitive Typ eine Zwillingsklasse. Jede dieser Klassen speichert ein einzelnes Feld mit einem Wert eines bestimmten Typs. Diese Klassen werden Wrapper-Typen genannt , da sie primitive Werte in Klassen einschließen.
Hier ist eine Liste dieser Typen. Kennst du irgendwelche?
| Primitiver Typ | Wrapper-Klasse |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Die Namen primitiver Typen beginnen mit einem Kleinbuchstaben, die Namen der Wrapper-Klassen jedoch mit einem Großbuchstaben. Einige der Klassennamen sind auch etwas länger: Integeranstatt intи Characteranstatt char.
Alle Objekte der Wrapper-Klassen sind unveränderlich ( immutable ).
Der vereinfachte Code für die IntegerKlasse sieht etwa so aus:
| Code | Notiz |
|---|---|
|
Variablenkonstruktor Die Methode gibt einen Wert zurück. Die statische Methode erstellt ein neues Objekt für eine Variable Integerint |
2. Konvertieren von an intin anInteger
Wrapper-Typen gelten als Gegenstücke zu ihren primitiven Geschwistern: Sie können problemlos ein Wrapper-Objekt erstellen, das einem primitiven Typ entspricht.
Lassen Sie uns den Typ int als Beispiel verwenden, um zu analysieren, wie primitive Typen mit ihren entsprechenden Wrapper-Typen interagieren. Der Code zum Konvertieren von an intin an Integerund umgekehrt würde wie folgt aussehen:
Um ein intin ein umzuwandeln Integer, müssen Sie diesen Code schreiben:
Integer name = new Integer(value);
Wo nameist der Name einer IntegerVariablen und valueder umschlossene intWert?
Beispiele:
| Code | Notiz |
|---|---|
|
|
|
|
|
Und um das an Integerin ein umzuwandeln int, müssen Sie diesen Code schreiben:
int name = variable.intValue();
Wobei nameist der Name einer intVariablen und variableein Verweis auf ein IntegerObjekt.
Beispiele:
| Code | Notiz |
|---|---|
|
|
|
|
|
|
|
|
3. Autoboxing und Unboxing
Aber selbst einfache Operationen mit dem IntegerTyp sind nicht einfach zu schreiben.
Wie bereits erwähnt, Integerist der Typ unveränderlich ( unveränderlich ). Um ein IntegerObjekt mit einem neuen intWert zu erstellen, müssen Sie explizit ein neues IntegerObjekt erstellen. intAllerdings ist es einfach, den Wert eines in einem Objekt gespeicherten Objekts abzurufen Integer– rufen Sie einfach die intValue()Methode auf.
Beispiel:
| Code | Beschreibung |
|---|---|
|
5Ein IntegerObjekt einschließen Den Wert vom IntegerObjekt abrufen Ein neues IntegerObjekt erstellen (gleich 10) |
Das ist ziemlich umständlicher Code, finden Sie nicht?
Das dachten sich die Java-Entwickler und brachten dem Compiler bei, wie er diese Vorgänge automatisch ausführt. Die automatische Konvertierung von an intin an Integerwird als Autoboxing bezeichnet (das automatische Einfügen des Werts in eine Box), und der umgekehrte Vorgang (Konvertieren von an Integerin an int) wird als Unboxing bezeichnet .
| Dein Code | Was der Compiler sieht |
|---|---|
|
|
|
|
|
|
Dank Autoboxing und Unboxing können Sie inteiner IntegerVariablen sicher eine zuweisen und umgekehrt. intSie können Ausdrücke beliebiger Komplexität schreiben, ohne zwischen den Typen und zu unterscheiden Integer.
Beispiele:
| Code | Was der Compiler generiert |
|---|---|
|
|
|
|
4. Vergleichen von Wrapper-Variablen
Autoboxing und Unboxing sind einfache und transparente Prozesse. Wir verwenden new Integer()Anweisungen nach Bedarf und rufen die intValue()Methode nach Bedarf auf.
Für Sie als Programmierer funktioniert alles gut und einfach. Denken Sie daran, dass beim Vergleich von an Integerund Integeran der Vergleich auf Referenzen und nicht auf Werten basiert.
| Code | Konsolenausgabe |
|---|---|
|
|
|
|
Die Variablen aund bspeichern keine intWerte. Sie speichern Verweise auf Objekte. Deshalb ist es wichtig, sich daran zu erinnern, wie man sie richtig vergleicht:
| Falsch | Rechts |
|---|---|
|
|
GO TO FULL VERSION