Heim >Java >javaLernprogramm >Wie können Sie primitive Variablen in Java austauschen, wenn die Parameterübergabe nach Wert erfolgt?

Wie können Sie primitive Variablen in Java austauschen, wenn die Parameterübergabe nach Wert erfolgt?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 04:51:30565Durchsuche

How Can You Swap Primitive Variables in Java When Parameter Passing is by Value?

Austauschen primitiver Variablen in Java: Überwindung der Wertübergabe

In Java erfolgt die Parameterübergabe grundsätzlich nach Wert, was eine Herausforderung darstellt, wenn versucht wird, primitive Variablen innerhalb einer Methode auszutauschen . Eine naive Implementierung wie:

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

ändert die ursprünglichen Variablen außerhalb der Methode nicht wirklich. Um dieses Problem anzugehen, gibt es hier zwei unkonventionelle Ansätze:

Return-Assign Pattern

Diese Technik ermöglicht das Austauschen durch Nutzung der Reihenfolge von Operationen in Methodenaufrufen:

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

Wann Beim Aufruf von swap(x, x=y) wird der Wert von x vor der Zuweisung an x ​​an swap übergeben. Wenn also a zurückgegeben und y zugewiesen wird, vertauscht es effektiv die Werte von x und y.

Generischer Swapper mit variadischen Parametern

Für eine allgemeinere Lösung kann eine generische Methode definiert werden die eine beliebige Anzahl von Objekten desselben Typs austauschen kann:

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

Der Aufruf dieser Methode als z = swap(a, a=b, b=c) tauscht die Werte von a, b und c aus , den endgültigen Wert z.

zuweisen

Das obige ist der detaillierte Inhalt vonWie können Sie primitive Variablen in Java austauschen, wenn die Parameterübergabe nach Wert erfolgt?. 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