Dieser Artikel vermittelt Ihnen relevantes Wissen über Java und stellt vor allem die damit verbundenen Probleme dar, ob Java als Wert oder als Referenz übergeben wird. Ich hoffe, dass es für alle hilfreich ist.
Empfohlene Studie: „Java-Video-Tutorial“
Zweck des Artikels: Überprüfen, ob die Java-Sprache eine Wertübergabe oder Referenzübergabe ist, und das Implementierungsprinzip der Java-Parameterübergabe.
Problemeinführung:
Lesen Sie zuerst den Code Abschnitt:
public static void main(String[] args){ Person p=new Person("张三"); f(p); System.out.println("实参:"+p);}public static void f(Person p){ p.name="李四"; System.out.println("形参:"+p);}
Laufergebnis:
Formaler Parameter: Person{name="李思"}
Tatsächlicher Parameter: Person{name="李思"}
Wir übergeben eine Objektvariable an Ändern Sie dann die Eigenschaften des Objekts innerhalb der Methode und drucken Sie die tatsächlichen Parameter und formalen Parameter. An der Oberfläche wurden die Werte der tatsächlichen Parameter und formalen Parameter geändert. Unterstützt Java auch die Referenzübertragung? ?
Die Antwort lautet: Java Die Sprache unterstützt nur die Wertübergabe, keine Referenzübergabe |
Bevor wir die Java-Parameterübergabemethode überprüfen, müssen wir zunächst den Unterschied zwischen Funktionswertübergabe und Referenz verstehen Übergabe.
Es ist ersichtlich, dass der Unterschied zwischen Wertübergabe und Referenzübergabe darin besteht, ob sich die Änderung der formalen Parameter auf die tatsächlichen Parameter auswirkt
Wir übergeben einen Basisdatentyp zur Methode und ändern Sie dann den Wert des formalen Parameters in der Methode und stellen Sie fest, dass die Änderung des formalen Parameters keine Auswirkungen auf den tatsächlichen Parameter hat.
public static void main(String[] args){ int a=1; f(p); System.out.println("实参:"+a);}public static void f(int a){ a=2; System.out.println("形参:"+a);}
Im vorgestellten Beispiel In der Frage scheint es, dass die Änderung des formalen Parameters Auswirkungen auf die tatsächlichen Parameter hat. Solange wir jedoch ein neues Objekt erstellen und es den formalen Parametern zuweisen und dann die tatsächlichen Parameter und formalen Parameter drucken, haben die beiden keine Auswirkungen Wirkung aufeinander. Dies bedeutet, dass Java die Referenzübergabe nicht einhält Viele Bereiche, die wir erstellen, werden im Heap platziert, und beim Übergeben des Basisdatentyps wird eine Kopie der Daten erstellt und an die Methode übergeben. Daher werden die tatsächlichen Parameter durch die Änderung der formalen Parameter nicht beeinflusst, wie in der Abbildung gezeigt:
Wenn die Objektreferenz an die Methode übergeben wird, wird tatsächlich eine Kopie der Referenz erstellt, die gleichzeitig auf dasselbe Objekt verweist. Wenn das Objekt über die formale Parameterreferenz bearbeitet wird, ist es wie der eigentliche Parameter Tatsächlich hat sich der Inhalt des Objekts geändert, aber die Objektvariablen haben sich nicht geändert und die tatsächlichen Parameter selbst haben sich nicht geändert. Daher ist das Beispiel in der Frage nicht schwer zu verstehen , die tatsächlichen Parameter Die Parameter werden in keiner Weise beeinflusst. Zu diesem Zeitpunkt haben die tatsächlichen Parameter und die formalen Parameter auf zwei verschiedene Objekte verwiesen. Java-Video-Tutorial"
Das obige ist der detaillierte Inhalt vonLassen Sie uns analysieren, ob Java als Wert oder als Referenz übergeben wird.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!