(Denkfrage:) Wird das folgende funktionieren?
class CosBsp4
{
public static void main ( String arg[] )
{
long w = 0;
System.out.println( "Kosinus ist:" + Math.cos( (double)w ) );
}
}
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.
Wir prüfen 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 eine Objektreferenz als Parameter für bestimmte Methoden bestimmter Klassen verwendet wird, könnten die Daten des Objekts geändert werden (wenn das Objekt veränderbar ist). Wir müssen die Klassendokumentation lesen, um zu erfahren wann das der Fall ist. Die meisten Methoden führen keine Änderungen über ihre Parameter durch, 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.
Wir prüfen 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?