Heim  >  Artikel  >  Java  >  14.Java-Grundlagen – Parameterübergabe

14.Java-Grundlagen – Parameterübergabe

黄舟
黄舟Original
2017-02-27 10:55:091048Durchsuche

Grundkonzepte

In Java gibt es zwei Parameterübergabemechanismen: Übergabe nach Wert und Übergabe nach Adresse.

  • Wenn ein Basistyp als Parameter übergeben wird, handelt es sich um eine Kopie des übergebenen Werts. Unabhängig davon, wie Sie diese Kopie ändern, ändert sich der ursprüngliche Wert nicht -nach Wert.

  • Durch die Übergabe eines Objekts als Parameter wird eine Kopie der Objektadresse im Speicher kopiert und an den Parameter übergeben, es handelt sich um eine Übergabeadresse.


Beispielstudie

1. Grundtypen werden als Parameter übergeben

public static void main(String[] args) {    int n =3; // ①

    System.out.println(n); // 3

    chageData(n); // ②

    System.out.println(n); // 3}public static void chageData(int num){
        num = 10; // ③}

Beobachten Sie die Ausgabe und stellen Sie fest, dass sich der Wert von n nicht geändert hat.

Da n und num Grundtypen sind, werden die Werte direkt in Variablen gespeichert.

Das Flussdiagramm ist wie folgt (entsprechend ①②③ im Code):

14.Java-Grundlagen – Parameterübergabe


2. Objekte werden als Parameter übergeben

Erster Blick auf das String-Beispiel:

public static void main(String[] args) {
    String str = "hello"; // ①
    System.out.println(str); // hello

    chageData(str); //②

    System.out.println(str); // hello}public static void chageData(String s){
    s ="world"; // ③}

Bei der Beobachtung der Ergebnisse haben wir festgestellt, dass sich str nicht geändert hat. Hier ist eine Analyse basierend auf dem Flussdiagramm:

  • Nachdem ① ausgeführt wurde, wird im Heap eine Objektreferenzstr generiert, die den Adressindex enthält, der auf den Speicher verweist. Das echte String-Objekt

  • generiert die Objektreferenz s in ② und erhält durch die Pass-by-Referenz auch den Adressindex „Hallo“.

  • Ordnen Sie die Objektreferenzen in ③ neu zu. Es liegt auf der Hand, dass der Wert des Objekts aus „Hallo“ -> „Welt“ stammen sollte. Aufgrund der Unveränderlichkeit von String wird jedoch ein neues Objekt erstellt, da ein neues Objekt erstellt wird, sobald sich String ändert.

14.Java-Grundlagen – Parameterübergabe


Sehen Sie sich das Beispiel von StringBuffer an:

public static void main(String[] args) {
    StringBuffer stb = new StringBuffer("hello"); // ①
    System.out.println(stb); // hello

    chageData(stb); // ②

    System.out.println(stb); // hello world}public static void chageData(StringBuffer s){
    s.append("world"); // ③}
}

Beobachten Sie die Ergebnisse und stellen Sie fest, dass sich stb geändert hat, weil StringBuffer Das Objekt ist veränderbar und durch Ändern seines Inhalts wird kein neues Objekt erstellt

14.Java-Grundlagen – Parameterübergabe

Das Obige ist der Inhalt von 14. Java-Grundlagen – Parameterübergabe, bitte achten Sie auf weitere Verwandte Inhalte PHP chinesische Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn