zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Was vermutet Ihr, wird bei dem folgenden Methodenaufruf passieren?

pointB.move( 14.305, 34.9 );

Antwort:

Das ist ein Fehler, da die Parameterliste zwei Gleitpunktzahlen enthält und nicht die erforderlichen zwei int-Werte.

Parameter müssen den korrekten Datentyp haben

Wenn eine Methode zu starten beginnt, muss sie die richtige Anzahl von Parametern haben und jeder Parameter muss von dem geforderten Typ sein.

Manchmal aber, gerade bevor die Methode zu starten beginnt, werden die in einer Parameterliste zu Verfügung gestellten Werte in den erforderlichen Typ konvertiert. Es gibt zwei Möglichkeiten, in denen das passieren kann:

  1. Explizit — der Programmierer verlangt durch eine Typumwandlung (Casting), dass die Werte konvertiert werden.
  2. Implizit — wenn der Compiler die Konvertierung ohne Datenverlust, oder nur bei geringem Verlust an Genauigkeit durchführen kann, wird er es automatisch tun.

Eine Typumwandlung sieht folgendermaßen aus:

(verlangterTyp)(ausdruck)

Dabei ist (verlangterTyp) so etwas wie (int) und (ausdruck) ist ein gewöhnlicher Ausdruck. Wenn es sich um eine einzelne Variable handelt, brauchen wir keine Klammern. Hier ist ein Beispielprogramm, das die Typumwandlung zeigt:

import java.awt.*;      // Die Klassenbibliothek importieren,
                        // in der Point definiert ist
class TypUmwandlungBsp
{

  public static void main ( String arg[] )
  {
    Point pointB = new Point();     // ein Point-Objekt an der
                                    // Position x=0, y=0 erzeugen
    pointB.move( (int)14.305, (int)(34.9-12.6) );
    System.out.println("Neue Position:" + pointB );
  }
}

In diesem Fall ist eine Typumwandlung für beide Parameter erforderlich, da die Konvertierung einer Gleitpunktzahl in ein int üblicherweise zu Datenverlust führt. Bei der Typumwandlung einer Gleitpunktzahl in ein int gehen die Nachkommastellen verloren. (Sie wird NICHT gerundet.)

FRAGE 5:

Was wird die Ausgabe des Programms sein?