zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

(Denkfrage:) Glauben Sie, dass das folgende funktioniert :


class CosBsp4
{
  public static void main ( String arg[] )
  {
    long w = 0;
    System.out.println( "Kosinus ist:" + Math.cos( (double)w ) );
  }
}

Antwort:

Ja — die Typumwandlung (double) wird nicht wirklich gebraucht, da sie nach einer Konvertierung verlangt, die ohnehin durchgeführt werden würde. Aber manchmal tun das Programmierer gerne, um klar zu machen was passiert.

Kann eine Methode einen primitiven Typ ändern?

Prüfen Sie das folgende Codefragment:

IrgendeineKlasse s = new IrgendeineKlasse(); // ein neues Objekt der Klasse
                                             // IrgendeineKlasse  erstellen
int              x = 32;

s.irgendeineMethode( x );                    // eine Methode des Objekts s aufrufen

System.out.println( "x ist: " + x ); // was wird ausgegeben?

Wenn eine primitive Variable als ein Parameter verwendet wird, ganz egal in welcher Methode, wird die Methode den Wert der Variablen nicht ändern. Also wird das oben stehende Fragment ausgeben:

x ist: 32

Das wird wahr sein, egal um welche Klasse es sich bei IrgendeineKlasse handelt und egal was für eine Methode irgendeineMethode ist.

Wenn ein Objekt als Parameter für bestimmte Methoden bestimmter Klassen verwendet wird, werden sich die Daten des Objekts ändern. Sie müssen die Klassendokumentation lesen, um zu erfahren wann das der Fall ist. Die meisten Methoden ändern ihre Parameter nicht, da das Verwirrung und Fehler verursachen kann. Zum größten Teil werden Parameter dazu verwendet Daten an eine Methode zu übergeben, um ihr mitzuteilen, was zu tun ist.

FRAGE 11:

Prüfen Sie das folgende Codefragment:

Point b = new Point();
short x = 16, y = 12;

b.move( x, y );

Die Parameter x und y enthalten short-Werte, die für die Methode in int-Werte konvertiert werden müssen. Werden die Inhalte von x und y durch diese Konvertierung geändert?