Heim  >  Artikel  >  Java  >  Lassen Sie uns analysieren, ob Java als Wert oder als Referenz übergeben wird.

Lassen Sie uns analysieren, ob Java als Wert oder als Referenz übergeben wird.

WBOY
WBOYnach vorne
2022-05-12 18:40:221894Durchsuche

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.

Lassen Sie uns analysieren, ob Java als Wert oder als Referenz übergeben wird.

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.

  • Wertübergabe bedeutet, dass beim Aufrufen der Funktion die tatsächlichen Parameter kopiert und an die Funktion übergeben werden, sodass die tatsächlichen Parameter nicht beeinträchtigt werden, wenn sie in der Funktion geändert werden.
  • Übergabe als Referenz bezieht sich auf die direkte Übergabe der Adresse der tatsächlichen Parameter an die Funktion, wenn die Funktion aufgerufen wird. Dann wirken sich die Änderungen an den Parametern in der Funktion auf die tatsächlichen Parameter aus.

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


1 Parameterübergabe von Basisdatentypen

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);}

2 Parameterübergabe des Referenzdatentyps

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:


Da das Objekt im Heap-Bereich platziert ist, können wir nur die Referenz des Objekts verwenden, um dieses Objekt zu bedienen

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen