20 Typenumwandlung 20.1 Implizites Casten |
|
Das Pluszeichen ist überladen. | Wir
betrachten die folgende Java-Programmsequenz:
int a =
2; Die Ausgaben, die die beiden letzten Zeilen verursachen, lauten Die
Summe ist: 23 Was geschieht? Die Methode (der
"Befehl") println
erzeugt ein Stringobjekt, das auf dem Bildschirm ausgegeben wird. Was
steht in diesem Stringobjekt? Zunächst die Zeichenkette, die zwischen den
Anführungsstrichen "... " steht. Das Pluszeichen, das in unserem Fall
dieser Zeichenkette folgt, zeigt an, dass eine weitere Zeichenkette
angehängt (=konkateniert) werden soll. Es folgt aber der Bezeichner "a"
, der für eine Variable vom Typ
int
steht. Was nun geschieht, ist sehr raffiniert. Der Zahlenwert, der in "a"
gespeichert ist, wird automatisch (wir nennen dies implizit) zu einer
Zeichenkette umgewandelt und der Zeichenkette
"Die Summe ist: "
hinzugefügt. In dem von println
erzeugten String steht jetzt also
"Die Summe ist: 2".
Der Vorgang wiederholt sich mit dem zweiten Pluszeichen und wir erhalten
schließlich:
Die Summe ist: 23.
Sehr
schön erkennt man auch, dass Java den Ausdruck in den Klammern von
println
von links nach rechts auswertet. Man könnte jetzt geneigt sein, folgendes zu versuchen: int
x = 2; und hoffen, dass bei der Zuweisung a = x der Inhalt bei Ablegen in a eine implizite Typenumwandlung, von einer int-Zahl zu einem String erfährt. Tatsächlich übersetzt der Javacompiler die letzte Zeile nicht und meldet einen Fehler. Man könnte die letzte Zeile durch String a = ""+x;
|
casten |
ersetzten, um das
gewünschte zu erreichen. Das Pluszeichen konkateniert den Leerstring mit
dem zu einem String gewandelten Inhalt von
x.
Um Missverständnisse zu vermeiden, betonen wir, dass der Inhalt von x
unverändert eine
int-Zahl
bleibt. Wir benutzen deshalb lieber den Begriff casten. Beim Konkatenieren
handelt es sich um ein implizites Catsen: Ohne dass es explizit verlangt
wird, "erkennt" der Compiler am Kontext, dass eine Typenumwandlung
vorgenommen werden soll. |
zu | 20.2 Explizites Casten |
zur Startseite | www.pohlig.de (C) MPohlig 2003 |