Exemplarerzeugungsausdrücke von Hüllklassen [] (Exemplarerzeugungsausdrücke von Hüllklassen), Lektion, Seite 723305
https://www.purl.org/stefan_ram/pub/huellerzeugung_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Exemplarerzeugungsausdrücke von »java.lang.Integer«

Der Exemplarerzeugungsausdruck »new java.lang.Integer( 2 )« referenziert wie der Methodenaufruf »java.lang.Integer.valueOf( 2 )« ein java.lang.Integer-Objekt, das den int-Wert »2« darstellt.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final java.lang.Integer v2 = java.lang.Integer.valueOf( 2 );
final java.lang.Integer n2 = new java.lang.Integer( 2 );
java.lang.System.out.println( v2 );
java.lang.System.out.println( n2 );
java.lang.System.out.println( v2.equals( n2 ));
java.lang.System.out.println( v2 == n2 ); }}
transcript
2
2
true
false

Wenn ein Exemplar mit einem Exemplarerzeugungsausdruck referenziert wird, wird bei jeder Auswertung des Exemplarerzeugungs ein neues  Exemplar angelegt. Während es nicht sicher ist, ob mehrere Auswertungen des Ausdrucks »java.lang.Integer.valueOf( 201 )« immer dasselbe Objekt ergeben, ist es also sicher, daß mehrere Auswertungen des Ausdrucks »new java.lang.Integer( 201 )« immer ein neues  (anderes) Objekt ergeben, daher kommt ja auch das Schlüsselwort »new«. Dies ist bei einem Aufruf der Methode »java.lang.Integer.valueOf« nicht  garantiert: sie kann auch eine Referenz auf ein Exemplar zurückgeben, das schon vor  dem Aufruf existierte. Daher ist ihr Aufruf vermutlich in der Regel effizienter  als eine Auswertung eines Exemplarerzeugungsausdrucks.

In der Regel sollte also der Ausdruck »java.lang.Integer.valueOf( 2 )« und nicht der Ausdrucks »new java.lang.Integer( 2 )« verwendet werden, wenn eine Referenz auf eine Objektdarstellung des int-Wertes »2« benötigt wird.

Übungsfragen

?   Gleichheit von java.lang.Integer-Objekten

Was gibt das folgende Programm aus?

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final java.lang.Object a = new java.lang.Integer( 201 );
final java.lang.Object b = new java.lang.Integer( 201 ); java.lang.System.out.println( a == b ); }}

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723305 stefan_ram:723305 Exemplarerzeugungsausdrücke von Hüllklassen Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723305, slrprddef723305, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/huellerzeugung_java