In Java werden Argumente nach Wert übergeben, Objektargumente übergeben einen Verweis auf das Objekt. Dies bedeutet, dass Sie die Referenz des Arguments ändern können, aber das Objekt, an das Sie die Referenz übergeben haben, nicht ändert. Sie haben zwei Möglichkeiten, das neue Objekt zurückzugeben (bevorzugt) oder den Verweis an einen Container zu übergeben, der die neue Referenz (Sammlung, Array usw.) erhalten kann. Beispiel:
%Vor%Referenzen in Java werden von value übergeben. Selbst wenn Sie den Verweis in der Funktion ändern, werden Änderungen nicht in die aufrufende Funktion zurückreflektiert, da das, was Sie innerhalb der Funktion ändern, nur a ist Kopie der Originalreferenz nicht die Originalreferenz selbst.
Sie können jedoch die neue Zeichenfolge von Ihrer changeString-Methode zurückgeben, anstatt zu versuchen, die Referenz dort (innerhalb der Funktion) selbst zu ändern.
Nur wenn Sie die Funktion
machen %Vor%String ist unveränderlich, und Java hat kein Konzept eines "Verweises auf eine Referenz" als Datentyp der ersten Klasse. Wenn Ihnen das oben genannte nicht gefällt, können Sie eine kleine Klasse mit einem einzelnen String-Feld erstellen.
Sie können natürlich die neue Zeichenfolge von Ihrer changeString-Methode zurückgeben, anstatt zu versuchen, sie vor Ort zu ändern.
Alternativ können Sie ein Objekt erstellen, das eine Zeichenfolge umschließt oder enthält und diese übergeben. Die ChangeString-Methode würde die interne Zeichenfolge für Ihr Objekt ändern, und die Hauptmethode würde weiterhin einen Verweis auf dieses Objekt enthalten.
Andernfalls können Sie dies nicht tun. String ist unveränderlich, und Java übergibt Objekte immer als Wert, der ein Zeiger auf ein bestimmtes Objekt ist. Ändern Sie, wo Sie zeigen, und Sie verweisen nicht mehr auf das gleiche Objekt.
A : Sie können in Java-Objektreferenzen keinen Wert übergeben.
Wenn Sie das wirklich brauchen, können Sie einen Wrapper erstellen gefällt dir und benutze es so, wie du es erwartet hast:
%Vor%Java erlaubt keine Parameter wie C #, so dass Sie es nicht tun werden in der Lage, dies als solches zu erreichen.