Die folgende Tabelle listet primitive Typen und ihre Objekt-Wrapper-Klassen auf.
Primitivtyp | Verpackungsklasse |
boolean | Boolean |
char | Character |
byte | Byte |
kurz | Kurz |
int | Referenztypen und primitive Typen verhalten sich völlig unterschiedlich und haben eine unterschiedliche Semantik. Angenommen, es gibt zwei lokale Variablen in einer Methode, eine Variable ist vom primitiven Typ int und die andere Variable ist eine Objektreferenz auf ein Integer-Objekt: |
Der Zugriff auf alle Objekte in Java erfolgt über Objektreferenzen. Eine Objektreferenz ist ein Zeiger auf einen Bereich im Heap, in dem das Objekt gespeichert ist. Wenn Sie einen primitiven Typ deklarieren, deklarieren Sie den Speicher für den Typ selbst. Referenztypen und primitive Typen haben unterschiedliche Eigenschaften und Verwendungen. Dazu gehören: Größen- und Geschwindigkeitsprobleme, in welcher Art von Datenstruktur dieser Typ gespeichert wird, was passiert, wenn Referenztypen und primitive Typen als Instanzdaten einer angegebenen Klasse verwendet werden Standardwert. Der Standardwert für Objektreferenz-Instanzvariablen ist null, während der Standardwert für Instanzvariablen primitiven Typs von ihrem Typ abhängt. | Der Code vieler Programme enthält sowohl primitive Typen als auch deren Objekt-Wrapper. Bei der Prüfung, ob sie gleichwertig sind, wird es problematisch sein, mit beiden Typen zu arbeiten und zu verstehen, wie sie richtig interagieren und koexistieren. Programmierer müssen verstehen, wie diese beiden Typen funktionieren und interagieren, um Fehler in ihrem Code zu vermeiden. |
Für die Verwendung primitiver Typen ist kein Aufruf von new oder das Erstellen eines Objekts erforderlich. Das spart Zeit und Platz. Auch das Mischen primitiver Typen und Objekte kann zu unerwarteten Ergebnissen im Zusammenhang mit der Zuweisung führen. Code, der fehlerfrei aussieht, erfüllt möglicherweise nicht die gewünschte Aufgabe. Zum Beispiel: | Dieser Code generiert die folgende Ausgabe: |
Diese Verwirrung wird durch die Verwendung primitiver Typen und Objekte verursacht. Die Zuweisung funktioniert bei beiden Typen nicht unterschiedlich. Aber es kann alles anders aussehen. Durch die Zuweisung wird der Wert auf der linken Seite des Gleichheitszeichens (=) gleich dem Wert auf der rechten Seite. Dies ist bei primitiven Typen wie int a und b früher offensichtlich. Bei nicht-primitiven Typen (z. B. Point-Objekten) ändert die Zuweisung die Objektreferenz, nicht das Objekt selbst. Daher ist x nach der Aussage | gleich y. Mit anderen Worten: Da x und y Objektreferenzen sind, verweisen sie nun auf dasselbe Objekt. Daher ändert jede Änderung von x auch y. Folgendes ist die Situation, nachdem der Code bei //1 ausgeführt wurde: |
Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen Referenztypen und primitiven Typen in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!