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[] )
{
// einen Point
an der Position x=0, y=0 erzeugen
Point pointB = new Point();
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?