Java Reference
In-Depth Information
In Zeile 3 erfolgt zunächst die Addition im Bereich des Typs
short
. Der Zuweisungsoperator besitzt
aber mit der Variablen
i
einen Operanden vom Typ
int
und mit dem addierten Wert einen Operan-
den vom Typ
short
. Letzterer wird vor der Zuweisung automatisch in den Typ
int
umgewandelt.
In Zeile 4 besitzt der Additionsoperator einen Operanden vom Typ
int
(nämlich die Variable
i
) und
einen Operanden vom Typ
short
(nämlich die Variable
s
). Also wird vor der Addition der Wert
von
s
in den Typ
int
umgewandelt, der addierte Wert ist vom Typ
int
. Vor der Zuweisung an die
Variable
f
wird er noch in den Typ
float
gecastet.
Soll der Wert eines größeren Typs in einen kleineren Typ umgewandelt werden, so muss eine expli-
zite Typumwandlung mit dem sogenannten
Type-Cast-Operator
durchgeführt werden. Hierbei setzt
man den gewünschten Zieltyp in runde Klammern eingeschlossen vor den umzuwandelnden Aus-
druck, Beispiel:
1
void main() {
2
double d = 7.9;
int i = (int)d + 3;
3
4
}
Hier wird in Zeile 3 vor der Addition der in der Variablen
d
gespeicherte double-Wert in einen int-
Wert umgewandelt. Bei der Umwandlung von Gleitkommatypen in Ganzzahltypen werden dabei die
Nachkommastellen gestrichen, der Ausdruck
(int)d
liefert also den
int
-Wert 7.
Zu Problemen kann es kommen, wenn der Wert eines Ausdrucks im kleineren Typ gar nicht existiert.
Der Ausdruck
(short)33000
liefert bspw. den
short
-Wert
32536
.
Treten in Ausdrücken Operanden vom Typ
char
und Ganzzahl- bzw. Gleitkommatypen auf, so wird
der char-Wert implizit in den anderen Typ gecastet. Grundlage ist hierbei die Unicode-Codierung des
entprechenden char-Wertes, bspw. 97 bei
'a'
oder 64 bei
'@'
. Eine Typunwandlung in die andere
Richtung muss explizit erfolgen:
1
void main() {
2
char aBuchstabe = 'a';
char dBuchstabe = (char)(aBuchstabe + 3);
3
4
}
In Zeile 3 wird dabei zunächst der Wert der char-Variablen
aBuchstabe
implizit in den Wert
97
des
Typs
int
gecastet. Dann wird
3
addiert und der berechnete
int
-Wert
100
explizit in den Typ
char
umgewandelt.
100
entspricht hier dem char-Wert 'd'.
Nicht alle Typumwandlungen sind erlaubt. So liefert bspw. der Compiler beimVersuch, einen boolean-
Wert in einen int-Wert zu wandeln, einen Fehler:
void main() {
int i = (int)true;
// Fehler
// ...
}
Search WWH ::
Custom Search