Automatische Konvertierung des Parametertyps


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?