Java Reference
In-Depth Information
Für
wrappertyp
kann eine der Klassen
byte
,
short
,
int
,
long
,
float
oder
double
eingesetzt
werden. Da sie als
static
angelegt sind, existieren Sie nur einmal je Klasse und können
durch die Angabe
final
auch nicht verändert werden. Das würde auch wenig Sinn
machen, denn die Konstanten stellen die Ober- und Untergrenzen des Wertebereichs
für den jeweiligen Datentyp dar. Sie können so jederzeit abgefragt werden.
Die Klassen
Float
und
Double
besitzen zusätzlich noch die Konstanten
NaN
(Not a Num-
ber),
NEGATIVE_INFINITY
und
POSITIVE_INFINITY
.
NaN
entsteht bei der Division, wenn die
Kommazahldivision 0.0/0.0 ausgeführt wird. Das Ergebnis dieser Division ist nicht
definiert. Wird eine positive Zahl durch 0.0 dividiert, entsteht als Ergebnis
Infinity
.
Wird eine negative Zahl durch 0.0 dividiert, entsteht als Ergebnis
-Infinity
.
8.3.3 Vereinfachter Umgang mit Wrapper-Klassen durch Autoboxing
Der Compiler vereinfacht den Umgang mit Wrapper-Klassen durch das sogenannte
Autoboxing
ganz entscheidend. Stellen Sie sich vor, Sie verwenden in einem Programm
primitive Datentypen und Wrapper-Klassen:
inta=5;
integerb=newInteger(3);
Stellen Sie sich nun weiter vor, Sie wollen Rechenoperationen in gemischten Ausdrü-
cken vornehmen. Sie wollen z. B. a mit b multiplizieren. Der Ausdruck müsste eigentlich
so formuliert werden:
intc=a*b.intValue();
Sie müssen also den im Wrapper-Objekt
b
gespeicherten Wert als primitiven Typ
int
zurückliefern lassen, damit er mit dem anderen primitiven Typ multipliziert werden
kann. Wagen Sie doch einfach einmal den Versuch, die Operation so zu formulieren, als
wären beide Variablen primitive Datentypen. Schreiben Sie also
intc=a*b;
Sie werden feststellen, dass der Compiler ohne Fehlermeldung auch diese Schreibweise
akzeptiert. Das ist nicht ganz selbstverständlich, denn der Compiler formuliert im Hin-
tergrund die Operation so um, wie sie eigentlich formuliert werden müsste, und baut
den Aufruf von
intValue
ein. Dieser Vorgang wird als Autoboxing bezeichnet. Das
bedeutet letztendlich, dass primitive Datentypen und ihre zugehörigen Wrapper-
Objekte völlig kompatibel zueinander verwendet werden können. Deshalb funktionie-