Parameterübergabe

KalleWirsch

Aktives Mitglied
Hallo zusammen,

bisher dachte icch eigentlich das Java per callByValue seine Variablen übergibt ... Bzw ist es mir nicht ganz so klar ob das jetzt callByValue oder CallByRefrence ist.

Ich habe hier ein Minimalbeispiel
Java:
public class F_Test_1 {
    public static void main(final String[] args) {
	final Vector<String> v = new Vector<String>();
	v.add("1");
	v.add("2");
	v.add("3");
	final Iterator<String> it1 = v.iterator();
	System.out.println("it1.next() " + it1.next());
	F_Test_1.andiamo(it1);
	System.out.println("it1.next() " + it1.next());
	// System.out.println("it2.next(): "+ it2.next());
    }

    public static void andiamo(final Iterator<String> iX) {
	System.out.println("iX.next(): " + iX.next());
    }
}

Weshalb beeinflusst der übergebene Iterator aus andiamo auch den aus der eigentlichen main-Funktion?

VG Kalle
 
Hab das hier gefunden:

"Wie bereits erwähnt, sind Objektvariablen Referenzen, also Zeiger. Zwar werden auch sie bei der Übergabe an eine Methode per Wert übergeben. Da innerhalb der Methode aber der Zeiger auf das Originalobjekt zur Verfügung steht (wenn auch in kopierter Form), wirken sich Veränderungen an dem Objekt natürlich direkt auf das Originalobjekt aus und sind somit für den Aufrufer der Methode sichtbar. Wie in allen anderen Programmiersprachen entspricht die call by value-Übergabe eines Zeigers damit natürlich genau der Semantik von call by reference."

von
call by reference - Java @ tutorials.de: Forum & Hilfe
 

Zurück
Oben