Heim >Backend-Entwicklung >C++ >Übergibt Java Parameter als Referenz oder als Wert und wie kann man ein referenzähnliches Verhalten erreichen?

Übergibt Java Parameter als Referenz oder als Wert und wie kann man ein referenzähnliches Verhalten erreichen?

DDD
DDDOriginal
2024-12-29 18:44:141037Durchsuche

Does Java Pass Parameters by Reference or by Value, and How Can You Achieve Reference-Like Behavior?

Übergabe von Parametern per Referenz in Java: Eine Klarstellung

Entgegen der landläufigen Meinung unterstützt Java die Parameterübergabe per Referenz nicht auf die gleiche Weise als C#-Schlüsselwort ref. Diese Wahrnehmung beruht jedoch auf der Tatsache, dass bei Referenztypparametern die Referenz selbst als Wert übergeben wird.

In Java werden alle Parameter als Wert übergeben. Wenn ein Referenztypparameter an eine Methode übergeben wird, wird eine Kopie der Referenz erstellt. Dies bedeutet, dass Änderungen, die an der Referenz innerhalb der Methode vorgenommen werden, keine Auswirkungen auf die Referenz außerhalb der Methode haben.

Um dies zu veranschaulichen, betrachten Sie das folgende Beispiel:

Object o = "Hello";
mutate(o);
System.out.println(o); //Hello

private void mutate(Object o) { o = "Goodbye"; }

Der obige Code gibt Folgendes aus: Hallo“ zur Konsole. Dies zeigt, dass die Referenz o innerhalb der Methode mutate nicht mit der Referenz außerhalb der Methode identisch ist.

Wenn Sie die Referenz selbst ändern möchten, müssen Sie dies tun Verwenden Sie einen expliziten Referenztypparameter, z. B. java.util.concurrent.atomic.AtomicReference. Hier ist ein Beispiel:

AtomicReference<Object> ref = new AtomicReference<Object>("Hello");
mutate(ref);
System.out.println(ref.get()); //Goodbye!

private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }

In diesem Fall wird der Parameter ref als Referenz übergeben und der Wert der Referenz wird innerhalb der Methode mutate geändert. Als Ergebnis gibt der Code „Auf Wiedersehen!“ aus. zur Konsole.

Das obige ist der detaillierte Inhalt vonÜbergibt Java Parameter als Referenz oder als Wert und wie kann man ein referenzähnliches Verhalten erreichen?. 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