1. In erster Linie, Java
ist pass by Value
. (dh Vorübergehender Kopiervorgang ).
2. Sie geben das reference
Nicht das Objekt an die Methode weiter.
Beispiel:
%Vor%Der obige Code soll nicht zeigen, wie Swapping durchgeführt wird, sondern um einen wichtigen Punkt sichtbar zu machen.
Wenn die Methode go(String s)
aufgerufen wird, indem ein Argument "a", das ein Object reference variable
vom Typ String ist, an den Parameter "s" übergeben wird, der auch ein Object reference variable
vom Typ String, ist nur der Verweis, der von Value / Copy übergeben wird.
Alle Änderungen am reference
wirken sich auf das String-Objekt auf dem Heap, NICHT the reference
.
Was an eine Methode übergeben wird, ist eine Kopie der Referenz des Objekts. Unabhängig davon, wie oft Sie die Referenzen neu zuweisen, wird die ursprüngliche Referenz nicht beeinflusst.
Versuchen Sie Folgendes:
%Vor%Die folgende Methode würde jedoch für das übergebene Originalobjekt keinen Unterschied machen.
%Vor%Java übergibt die Referenzen immer nach Wert. Lesen Sie diese Antwort , um weitere Informationen zu erhalten. Sie können jedoch zwei Zeichenfolgen über Arrays oder Wrapperklassen austauschen.
BEARBEITEN:
@dasblinkenlight zeigt, wie man mit Arrays zwei Strings vertauscht, und hier ein Beispiel für die Verwendung der Wrapperklasse:
%Vor%%Vor%
AUSGABE:
%Vor% Java übergibt Referenzen nach Wert; Das Vertauschen von Verweisen in der aufgerufenen Methode hat keine Auswirkungen auf den Aufrufer. Ihre Zeichenfolgen sind unveränderlich. Sie können also in der Methode swap
, die für den Aufrufer sichtbar wäre, nichts mit ihnen tun.
Wenn Sie jedoch veränderbare Objekte übergeben, werden Sie sehen, dass Änderungen an ihnen, die in swap
vorgenommen wurden, sich im Original widerspiegeln:
Dies funktioniert, weil das Array veränderbar ist (d. h. Änderungen an seinem Zustand vorgenommen werden können) und weil ein Verweis auf das ursprüngliche Objekt an die aufgerufene Funktion übergeben wird (nach Wert). Wenn swap
den Inhalt von a
ändert, wird auch der Inhalt von a
im Aufrufer geändert, da es sich um dasselbe Objekt handelt.
Java wird streng nach Wert übergeben.
Lassen Sie uns Ihren Code wie folgt unter dem Gesichtspunkt der Erklärung ändern:
%Vor%}
S1 und S2 sind die Referenzen, die die Adresse des String-Objekts enthalten. Für zB: S1 = 123, S2 = 234
Wenn wir die swap-Methode aufrufen, wird eine Kopie von S1 und S2 erstellt und str1 und str2 zugewiesen.
Was str1 = 123 und str2 = 234 ist.
Die Swap-Methode tauscht nur die in str1 und str2 vorhandenen Werte aus. (str1 = 234 str2 = 123), während S1 und S2 immer noch auf den gleichen Speicherplatz zeigen.
Dies ist der Grund, warum der Swap nicht in der Hauptmethode reflektiert wird.
Wir können Objekte austauschen. Es ist so einfach. Sie müssen nur ein Dummy-Objekt verwenden, um zwei Objekte zu tauschen.
Beispiel ist unten angegeben:
%Vor%Tags und Links java pass-by-reference