Heim >Web-Frontend >js-Tutorial >Detaillierte Einführung in Javas Call-by-Value und Call-by-Reference

Detaillierte Einführung in Javas Call-by-Value und Call-by-Reference

不言
不言nach vorne
2019-03-16 10:41:343783Durchsuche

Dieser Artikel bietet Ihnen eine detaillierte Einführung in Javas Call-by-Value. Ich hoffe, dass er Ihnen als Referenz dienen wird .

Das Thema lautet wie folgt:

Detaillierte Einführung in Javas Call-by-Value und Call-by-Reference

Zwei Möglichkeiten, Parameter in Java zu übergeben

  1. Aufruf nach Wert (Wertübertragung) : übergeben Ist der Wert (für grundlegende Datentypen), z. B. die Übergabe eines ganzzahligen Werts. Tatsächlich sind die Parameter in einer als Wert übergebenen Methodenaufrufmethode nur eine Kopie der tatsächlichen Parameter.
  2. Call by Reference: Was übergeben wird, ist eine Referenz auf das Objekt (für das Objekt), das heißt, was übergeben wird, ist die Adresse des Objekts. Tatsächlich wird bei der Übergabe einer Referenz eine neue Kopie der Referenz generiert, und sowohl die alte als auch die neue Referenz verweisen auf dieselbe Adresse.

Codebeispiel

public class TestJavaCallBy {

    // 测试值传递
    public static void testCallByValue(int value) {
        value *= 10;
    }

    // 测试引用传递
    public static void testCallByReference(StringBuilder sb) {
        sb.append(" - " + ZonedDateTime.now());
    }

    public static void main(String[] args) {

        // 测试值变量
        int param = 1;
        // 测试引用对象
        StringBuilder sb = new StringBuilder("666");

        // 测试
        System.out.println(param);
        testCallByValue(param);
        System.out.println(param);

        System.out.println(sb.toString());
        testCallByReference(sb);
        System.out.println(sb.toString());
    }
}

控制台输出结果
1
// 结果仍为1,因为参数传递的是实参的一份拷贝,对实参不造成影响
1 

666
// 传递的是引用的拷贝,新旧两个引用指向同一个对象(地址),因此append操作是作用在该对象上
666 - 2019-03-16T01:25:57.933038500+08:00[Asia/Shanghai]

Dann können wir die Schlussfolgerung ziehen:

  1. Aufruf nach Wert ändert den Wert des tatsächlichen Parameters nicht
  2. Call-by-Reference kann die Referenzadresse des tatsächlichen Parameters nicht ändern
  3. Call-by-Reference kann den Inhalt des tatsächlichen Parameters ändern

Dann lautet die Antwort auf diese Frage wie folgt.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Javas Call-by-Value und Call-by-Reference. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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