1. Parameterübertragungsmethode
Um das Titelproblem zu lösen, stellen Sie zunächst die Parameterübergabemethode ein. Derzeit gibt es drei Hauptparameterübertragungsmethoden für verschiedene Programmiersprachen:
1. Nach Wert passieren
2. Nach Bezug
3. Pass am Zeiger vorbei
Die Value-Passing-Repräsentationsmethode (Funktion) empfängt eine Kopie der vom Anrufer bereitgestellten Variablen, ohne den Wert des Parameters zu ändern. Der Wert der vom Anrufer bereitgestellten Variablen wird von der Referenz übergeben; Der Wert des Wertes (Funktion) wird vom Zeiger vom Zeiger empfangen, wird vom Zeiger empfangen, ohne den Wert und die Adresse des Zeigers zu ändern, aber die vom Zeiger gezeigte Adresse kann geändert werden.
2. Java -Parameterübertragungsmethode
Leider gibt es nur eine von Java bereitgestellte Parameterübergabemethode, die mit Wert übergeben wird. Das heißt, die Methode erhält eine Kopie aller Parameterwerte, und die Methode kann den an ihn übergebenen Parametervariablen nicht ändern.
Die Parametertypen der Java -Methode können in zwei Kategorien unterteilt werden:
1. Grundlegende Datentypen
2. Objektreferenz
Freunde, die Erfahrung in der Java -Entwicklung haben, wissen, dass Java -Methoden für grundlegende Datentypen den Inhalt von Variablen nicht ändern können. Kann der Inhalt nicht durch Bezugnahme auf das Objekt der benutzerdefinierten Klasse geändert werden? Dies kann durch ein einfaches Beispiel erklärt werden. Der Code ist wie folgt:
PUBPC -Klasse MyClass {private Objekt num; PUBPC MyClass (Objekt num) {this.num = num; } PUBPC -Objekt getNum () {return num; } pubpc void setNum (Objekt num) {this.num = num; }} PUBPC -Klasse Main {PUBPC statische Voidänderung (MyClass MyClass) {myclass.setnum (100); } pubpc static void main (String [] args) {myclass a = new myclass (10); System.out.println ("Der Wert vor dem Aufrufen der Änderungsmethode lautet:"+a.getNum ()); Änderung (a); System.out.println ("Der Wert nach dem Aufrufen der Änderungsmethode lautet:"+a.getNum ()); }}Die obigen Ergebnisse der Codeausführung sind wie folgt:
Aus den Ergebnissen ist ersichtlich, dass die Änderungsmethode den Status des Objekts ändern kann. Mit anderen Worten können Java -Methoden den Parameterzustand eines Objekts ändern. Bedeutet dies also, dass Java -Methoden Referenzverkleidungen für Parameter benutzerdefinierter Datentypen (benutzerdefinierte Klassen) verwenden? Um die Ergebnisse zu bestätigen, können Sie ein einfaches Beispiel schreiben, und alle benutzerdefinierten Klassen sind weiterhin myclass oben. Der Code ist wie folgt:
PUBPC statischer Void -Swap (Myclass A, Myclass B) {MyClass tmp = a; a = b; B = TMP; } pubpc static void main (String [] args) {myclass a = new myclass (10); Myclass B = neue Myclass (100); System.out.println ("Der Wert eines vor dem Swap ist:"+a.getNum ()); System.out.println ("Der Wert von B vor dem Swap ist:"+b.getNum ()); tauschen (a, b); System.out.println ("Der Wert von A After Swap ist:"+a.getNum ()); System.out.println ("Der Wert von B nach dem Austausch ist:"+b.getNum ()); }}Die Ausführungsergebnisse sind wie folgt:
Aus den oben genannten Ergebnissen können wir feststellen, dass Java -Methoden immer noch den Wert für die Parameterübergabe von benutzerdefinierten Klassen verwenden, nicht für die Übergabe von Referenzen. Warum können Java -Methoden dann den Objektzustand ändern?
Sie können den spezifischen Ausführungsprozess für den Aufruf der Änderungsmethode berücksichtigen, um die Antwort zu finden.
Der spezifische Ausführungsprozess ist:
MyClass wird in eine Kopie mit dem tatsächlichen Parameter A initialisiert, der ein Hinweis auf das Objekt ist.
Die SetNum -Methode wird auf die Referenz dieses Objekts angewendet. Die Anzahl des von MyClass und A verwiesenen MyClass -Objekts wird auf 100 geändert.
Nach Abschluss der Methode wird die Parametervariable Myclass nicht mehr verwendet. Und A bezieht sich weiterhin auf das Myclass -Objekt, dessen Num zu 100 wird. Wie in der Abbildung unten gezeigt.
Daher ist der Grund, warum Java -Methoden den Status des Objektparameters ändern können, dass die Methode eine Kopie der Objektreferenz erhält und die Objektreferenz und andere Kopien in der Methode gleichzeitig auf dasselbe Objekt beziehen.
Lassen Sie uns nun die Parameter der Java -Methode zusammenfassen:
Methoden können die Parameter eines grundlegenden Datentyps nicht ändern.
Methoden können den Status von Objektparametern ändern.
Methoden können keine Objektparameter auf ein neues Objekt beziehen (der Grund besteht darin, den spezifischen Ausführungsprozess beim Aufrufen der Änderungsmethode zu verweisen).
3. tauschen Sie die numerischen Werte von Variablen aus
Da Sie bereits den Grund kennen, ist es nicht schwierig, den Grund zu kennen. Veröffentlichen Sie meinen persönlichen Code direkt:
PUBPC statischer Void -Swap (Myclass A, Myclass B) {Objekt tmp = a.getNum (); A.Setnum (B.Getnum ()); B.Setnum (TMP);}Die Ausführungsergebnisse sind wie folgt:
Der Austausch ist gültig.
Referenzen: Java Core Technology Volume I.
Der obige Artikel über Java wechselt die numerische Implementierungsmethode zweier Variablen ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.