


Austauschen von Grundelementen in Java: Beheben der Einschränkungen der Wertübergabe
In Java wird versucht, Grundelemente auszutauschen, wenn Parameter als Wert übergeben werden Werte mit dem traditionellen Ansatz können zwecklos sein. Sehen wir uns einen Codeausschnitt an, der dies demonstriert:
<code class="java">public class SwapPrimitives { public static void swap(int a, int b) { int temp = a; a = b; b = temp; } public static void main(String[] args) { int x = 5; int y = 10; swap(x, y); System.out.println("x: " + x); // Output: 5 System.out.println("y: " + y); // Output: 10 } }</code>
Die Absicht dieses Codes besteht darin, die Werte von x und y zu vertauschen, aber wie Sie der Ausgabe entnehmen können, bleiben die Werte unverändert. Dies liegt daran, dass Java Werte übergibt, was bedeutet, dass eine Kopie der Grundwerte erstellt und an die Swap-Funktion übergeben wird. Alle Änderungen, die innerhalb der Swap-Funktion an diesen Kopien vorgenommen werden, haben keine Auswirkungen auf die Originalvariablen.
Um diese Einschränkung zu überwinden und den Austausch zu erreichen, können wir eine Technik anwenden, die die Methodenrückgabefunktionalität von Java nutzt. Indem wir der Swap-Funktion eine Return-Anweisung hinzufügen und das Ergebnis dem Aufrufer erneut zuweisen, können wir die Werte indirekt austauschen:
<code class="java">public static int swap(int a, int b) { // usage: y = swap(x, x=y); return a; } public static void main(String[] args) { int x = 5; int y = 10; y = swap(x, x = y); System.out.println("x: " + x); // Output: 10 System.out.println("y: " + y); // Output: 5 }</code>
In diesem modifizierten Code gibt die Swap-Funktion den Wert von a zurück. Sein Hauptzweck besteht jedoch darin, dem Aufrufer zu ermöglichen, den zurückgegebenen Wert dem ersten Argument (in diesem Fall x) neu zuzuweisen. Dadurch wird effektiv der Austausch von x und y erreicht. Das Verwendungsmuster für diese Funktion kann etwas kontraintuitiv sein, bietet aber eine praktikable Lösung für den Austausch von Grundelementen in Java.
Wenn Sie einen allgemeineren Ansatz wünschen, können Sie eine Methode erstellen, die eine beliebige Anzahl von Objekten austauschen kann des gleichen Typs:
<code class="java">public static <t> T swap(T... args) { // usage: z = swap(a, a=b, b=c, ... y=z); return args[0]; } public static void main(String[] args) { int x = 5; int y = 10; int z = 15; z = swap(x, x = y, y = z); System.out.println("x: " + x); // Output: 15 System.out.println("y: " + y); // Output: 10 System.out.println("z: " + z); // Output: 5 }</t></code>
Durch die Anwendung dieser Techniken können Sie Primitiven in Java effektiv austauschen, obwohl es keine Referenzübergabe gibt.
Das obige ist der detaillierte Inhalt vonWie können Sie in Java angesichts der Einschränkungen bei der Wertübergabe primitive Werte austauschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion