Was wird die Ausgabe des Programms sein?
Neue Position:java.awt.Point[x=14,y=22]
In dem vorherigen Beispiel führt die Konvertierung einer Gleitpunktzahl in einen Integer zu Datenverlust, also muss der Programmierer explizit eine Typumwandlung verlangen.
Wenn eine Konvertierung von einem Typ in einen anderen ohne Datenverlust durchgeführt werden kann,
wird sie der Compiler automatisch durchführen.
Zum Beispiel besagt die move()
Methode, dass
sie zwei int
-Parameter benötigt.
public void move(int x, int y); // (x,y) eines Point-Objekts ändern
Ein int
-Wert wird in 32 Bits festgehalten
Ein short
-Wert, der in 16 Bits festgehalten wird, kann in 32 Bits ohne Datenverlust konvertiert werden.
Warum? Die in 16 Bits kodierten Daten können genauso gut in 32 Bits kodiert werden. Also wird das folgende Programm kompilieren und korrekt ablaufen:
import java.awt.*; // Die Klassenbibliothek importieren, in der Point definiert ist class AutoConvertBsp { public static void main ( String arg[] ) { Point pointB = new Point(); // einen Point an der Position x=0, y=0 erzeugen short a=12, b=42; pointB.move( a, b ); // Die Werte der Parameterliste werden automatisch // in den geforderten int-Typ konvertiert System.out.println("Neue Position:" + pointB ); } }
(Die Variablen a
und b
selbst werden nicht verändert; sie werden nur verwendet, um mitzuteilen mit welchen Werten die Konvertierung
durchgeführt wird.)
Was wird dieses Programm ausgeben?