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