Heim  >  Artikel  >  Java  >  Können Sie primitive Werte in Java ohne Referenzübergabe austauschen?

Können Sie primitive Werte in Java ohne Referenzübergabe austauschen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 08:20:31160Durchsuche

 Can You Swap Primitive Values in Java Without Pass by Reference?

Das Fehlen von Pass-by-Reference in Java und seine Auswirkungen auf den Austausch von Primitiven

In Java erfolgt die Übergabe von Parametern an Methoden per Wert, d. h dass alle an den Parametern innerhalb der Methode vorgenommenen Änderungen nicht in den Variablen des Aufrufers widergespiegelt werden. Dies stellt eine Herausforderung dar, wenn versucht wird, die Werte zweier Grundelemente auszutauschen.

Versuch, Grundelemente mit Wertübergabe auszutauschen

Bedenken Sie die folgende Austauschfunktion in Java:

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

Diese Funktion versucht, die Werte zweier Ganzzahlen zu vertauschen, indem sie eine temporäre Variable erstellt und die Werte manuell jongliert. Nach dem Aufruf dieser Funktion bleiben die ursprünglichen Werte jedoch aufgrund der Wertübergabesemantik von Java unverändert.

Überwindung der Einschränkung

Um diese Einschränkung zu umgehen, kann man sie verwenden Eine Technik, die Javas Ansatz zur Parameterübergabe nutzt. Durch die Verwendung mehrerer Zuweisungen innerhalb der Swap-Funktion ist es möglich, den Austausch effektiv zu erreichen:

<code class="java">int swap(int a, int b) {
    return a;
}

// Usage: y = swap(x, x = y);</code>

In dieser modifizierten Version weist die Swap-Funktion a zu b zu und gibt dann a zurück. Der Aufrufer kann dann den Rückgabewert y zuweisen und die tatsächlichen Werte von x und y austauschen:

<code class="java">y = swap(x, x = y);</code>

Generischer Austausch für mehrere Objekte

Diese Technik kann sein verallgemeinert, um den Austausch mehrerer Objekte desselben Typs zu unterstützen:

<code class="java"><T> T swap(T... args) {
    return args[0];
}

// Usage: z = swap(a, a = b, b = c, ... y = z);</code>

Indem man sich auf die sequentielle Ausführung von Zuweisungen und Parameterübergaben verlässt, ist es möglich, Objekte in Java effektiv auszutauschen und so das Fehlen von Objekten zu umgehen „Pass-by-Reference“-Funktionalität.

Das obige ist der detaillierte Inhalt vonKönnen Sie primitive Werte in Java ohne Referenzübergabe austauschen?. 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