Was vermutet Ihr, wird bei dem folgenden Methodenaufruf passieren?
pointB.move( 14.305, 34.9 );
Das ist ein Fehler, da die Parameterliste zwei Gleitpunktzahlen enthält
und nicht die erforderlichen zwei int
-Werte.
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:
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.)
Was wird die Ausgabe des Programms sein?