Sobes.tech
Junior
149

Wie werden Parameter in Java-Methoden übergeben?

Antwort von AI

sobes.tech KI

In Java werden Parameter in Methoden per Wert (pass-by-value) übergeben.

Primitive Typen:

  • Es wird eine Kopie des Werts des Primitivs übergeben. Änderungen am Parameter innerhalb der Methode beeinflussen die ursprüngliche Variable außerhalb nicht.
// Beispiel für einen primitiven Typ
public void changeValue(int x) {
    x = x + 10; // Die Kopie von x innerhalb der Methode wird geändert
}

// Verwendung:
int original = 5;
changeValue(original);
// original bleibt 5

Objekte (Referenztypen):

  • Es wird eine Kopie der Referenz auf das Objekt übergeben. Beide Referenzen (die ursprüngliche und die im Methodenparameter) zeigen auf dasselbe Objekt im Speicher.
  • Das Ändern des Zustands des Objekts (z.B. Aufruf eines Setters, Modifikation von Feldern) über die übergebene Referenz innerhalb der Methode wirkt sich auf das ursprüngliche Objekt aus.
  • Das Neuzuweisen des Parameters auf ein neues Objekt innerhalb der Methode ändert die ursprüngliche Referenz außerhalb nicht.
// Beispiel für einen Referenztyp (Objekt)
public class MyObject {
    private int value;

    public MyObject(int value) {
        this.value = value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

public void modifyObject(MyObject obj) {
    obj.setValue(100); // Der Zustand des ursprünglichen Objekts wird geändert
}

public void reassignObject(MyObject obj) {
    obj = new MyObject(200); // Das Parameterobjekt verweist jetzt auf ein neues Objekt, die ursprüngliche Referenz bleibt unverändert
}

// Verwendung:
MyObject originalObject = new MyObject(10);
modifyObject(originalObject);
// originalObject hat jetzt value = 100

MyObject anotherObject = new MyObject(50);
reassignObject(anotherObject);
// anotherObject verweist immer noch auf das ursprüngliche Objekt mit value = 50

Kurz gesagt: Es wird der Wert der Referenz (ihre Adresse) übergeben, nicht das Objekt selbst. Dies ermöglicht die Modifikation des Objekts über diese Referenz, aber nicht die Änderung der ursprünglichen Referenz auf ein anderes Objekt.