zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Was wird die Ausgabe des Programms sein?

Antwort:


Neue Position:java.awt.Point[x=14,y=22]

Automatische Konvertierung des Parametertyps

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.)

FRAGE 6:

Was wird dieses Programm ausgeben?