Heim >Java >javaLernprogramm >Übergibt Java Objekte nach Wert oder nach Referenz?

Übergibt Java Objekte nach Wert oder nach Referenz?

DDD
DDDOriginal
2024-11-16 16:17:02418Durchsuche

Does Java Pass Objects by Value or by Reference?

Javas Unterscheidung zwischen „Pass by Value“ und „Pass by Reference“

In Java speichern Variablen Referenzen auf Objekte, nicht auf die Objekte selbst. Diese Unterscheidung wirkt sich darauf aus, wie Objekte als Argumente an Methoden übergeben werden.

Szenario A: Übergabe einer Referenz

Beachten Sie den folgenden Codeausschnitt:

Foo myFoo;
myFoo = createFoo();

public Foo createFoo() {
   Foo foo = new Foo();
   return foo;
}

Wenn myFoo das Ergebnis von createFoo() zugewiesen wird, wird ein neues Foo-Objekt erstellt und foo zugewiesen. Die Referenzvariable myFoo zeigt nun auf dieses neue Objekt. Wenn myFoo später geändert wird, wirken sich die Änderungen auf das ursprüngliche Foo-Objekt aus. Wenn myFoo jedoch eine neue Referenzvariable zugewiesen wird, zeigt sie auf ein anderes Objekt.

Szenario B: Übergabe eines Werts

Vergleichen Sie dies mit dem Folgenden:

Foo myFoo;
createFoo(myFoo);

public void createFoo(Foo foo) {
   Foo f = new Foo();
   foo = f;
}

In diesem Fall erhält die Methode createFoo() eine Referenz auf myFoo. Allerdings wird innerhalb der Methode ein neues Foo-Objekt erstellt und einer lokalen Referenzvariablen f zugewiesen. Die Zeile foo = f ändert nur die Referenz innerhalb der Methode, nicht die in der aufrufenden Methode gespeicherte Referenz. Daher werden alle an foo in der Methode vorgenommenen Änderungen nicht im ursprünglichen Foo-Objekt widergespiegelt.

Schlussfolgerung

Anhand dieser Beispiele ist offensichtlich, dass Java immer erfolgreich ist Argumente nach Wert, nicht nach Referenz. Der übergebene Wert ist eine Referenz auf das Objekt, nicht das Objekt selbst. Folglich wirken sich Änderungen an Referenzvariablen innerhalb von Methoden nicht auf die ursprünglichen Objekte aus. Änderungen, die durch die Referenz am Objekt selbst vorgenommen werden, werden jedoch im Originalobjekt widergespiegelt.

Das obige ist der detaillierte Inhalt vonÜbergibt Java Objekte nach Wert oder nach Referenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn