Java Reference
In-Depth Information
Nach diesen Deklarationen sind folgende Wertzuweisungen möglich:
byteZahl = 100; // keine Umwandlung erforderlich
intZahl = byteZahl; // Umwandlung von byte nach int
floatZahl = intZahl; // Umwandlung von int nach float
floatZahl = 23.345f; // keine Umwandlung erforderlich
doubleZahl = floatZahl; // Umwandlung von float nach double
Folgende Zuweisungen sind nicht möglich:
byteZahl = intZahl;
floatZahl = doubleZahl;
Sie erhalten bei diesen Zuweisungsversuchen den Fehlerhinweis »Type mismatch - can-
not convert from int to byte« bzw. »from double to float«.
Ist eine Umwandlung möglich, wird sie jeweils automatisch durchgeführt. Man nennt
diese automatische Umwandlung auch implizite Typumwandlung .
Operator
Bedeutung
Priorität
=
einfache Zuweisung
13
Tabelle 2.7 Zuweisungsoperatoren
Neben der quasi automatisch ablaufenden impliziten Typumwandlung besteht auch
die Möglichkeit, Umwandlungen zu erzwingen. Eine »erzwungene« Typumwandlung
nennt man explizite Typumwandlung . Für eine solche Typumwandlung wird der Cast-
Operator eingesetzt. Der Ausdruck (type)a wandelt den Ausdruck a in einen Ausdruck
des Typs type um. Auch hierbei handelt es sich nicht um eine Wertzuweisung. Das
bedeutet, dass a selbst dabei nicht verändert wird.
Mit Hilfe des Cast-Operators können Sie durchaus auch »größere« in »kleinere« Daten-
typen umwandeln. Logischerweise gehen dabei in der Regel aber Informationen verlo-
ren. So wird z. B. beim Umwandeln eines double in einen int der Nachkommateil
abgeschnitten (nicht gerundet). Oder beim Umwandeln eines short -Ausdrucks in einen
byte -Ausdruck wird ein Byte abgeschnitten. Das bedeutet, dass ein Teil, weil für ihn in
dem neuen Datentyp nicht genügend Speicherplatz zur Verfügung steht, verloren geht.
Dabei wird der zu speichernde Wert unter Umständen so verfälscht, dass nur schwer
nachzuvollziehende Fehler entstehen.
Search WWH ::




Custom Search