Heim > Java > javaLernprogramm > Hauptteil

Wie können wir in Java einen Werteaustausch ohne Pass-by-Reference erreichen?

Susan Sarandon
Freigeben: 2024-10-26 18:00:05
Original
921 Leute haben es durchsucht

How Can We Achieve Value Swapping in Java Without Pass-by-Reference?

Das Fehlen von Pass-by-Reference in Java: Erzielen von Swaps in Java

Eine der Eigenarten der Java-Programmierung ist das Fehlen von Pass-by-Reference. Parameterübergabe per Referenz. Dies kann beim Versuch, die Werte zweier primitiver Variablen zu vertauschen, hinderlich sein, wie die folgende Funktion zeigt:

<code class="java">void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}</code>
Nach dem Login kopieren

Leider erzielt diese Funktion nicht den gewünschten Effekt, da Änderungen an a und vorgenommen werden b innerhalb der Funktion wird nicht an den aufrufenden Code zurückgegeben, da Java-Parameter als Wert übergeben werden.

Eine Lösung: Proxy-Swapping durch Rückgabewerte

Trotz der Mangels Pass-by-Reference ist es immer noch möglich, ein Austauschverhalten in Java zu erreichen. Ein Ansatz besteht darin, Rückgabewerte zu verwenden, um den Proxy-Austausch zu erleichtern. Betrachten Sie den folgenden Code:

<code class="java">int swap(int a, int b) { // usage: y = swap(x, x=y);
    return a;
}

y = swap(x, x=y);</code>
Nach dem Login kopieren

In diesem Beispiel gibt swap a zurück und weist es y zu. Gleichzeitig wird x y neu zugewiesen, wodurch durch die Rückgabewertweitergabe effektiv ein Austausch erreicht wird.

Generischer Proxy-Austausch für Objekte

Der Proxy-Austausch-Ansatz kann erweitert werden um mit einer beliebigen Anzahl von Objekten desselben Typs zu arbeiten:

<code class="java"><T> T swap(T... args) { // usage: z = swap(a, a=b, b=c, ... y=z);
    return args[0];
}

c = swap(a, a=b, b=c);</code>
Nach dem Login kopieren

Diese generische Swap-Funktion gibt das erste Argument zurück und weist es der letzten Variablen in der Argumentliste zu, wodurch effektiv mehrere Swaps in einem einzigen Funktionsaufruf durchgeführt werden .

Während diese Techniken Workarounds für das Fehlen von Pass-by-Reference in Java bieten, ist es wichtig, sich ihrer Indirektheit und der möglichen Verwirrung bewusst zu sein, wenn mit Datentypen gearbeitet wird, die keine primitiven Typen sind.

Das obige ist der detaillierte Inhalt vonWie können wir in Java einen Werteaustausch ohne Pass-by-Reference erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!