Es gibt zwei Möglichkeiten, Methodenparameter in Java zu übergeben: Übergabe als Wert und Übergabe als Referenz.
1. Wert übergeben
Der Parametertyp ist int, long und andere grundlegende Datentypen (acht grundlegende Datentypen), der Prozess der Parameterübergabe unter Verwendung der Wertkopiermethode
Codeausschnitt 1:
public class Test { public static void main(String[] args) { int a = 5; fun(a); System.out.println(a);// 输出结果为5 } private static void fun(int a) { a += 1; } }
2. Übergabe als Referenz
Der Parametertyp ist ein Referenztyp, und der Parameterübertragungsprozess übernimmt die Kopierreferenzmethode
Codeausschnitt 2:
public class Test { public static void main(String[] args) { A a = new A(5); fun(a); System.out.println(a.a);// 输出结果为6 } private static void fun(A a) { a.a += 1; } static class A { public int a; public A(int a) { this.a = a; } } }
Fazit: Die Übergabe als Wert ändert den Originalwert nicht, die Übergabe als Referenz ändert den Wert des referenzierten Objekts
Sehen Sie sich den folgenden Fall an:
Codeausschnitt 3:
public class Test { public static void main(String[] args) { Integer a = 5; fun(a); System.out.println(a);// 输出结果为5 } private static void fun(Integer a) { a += 1; } }
Dies ist offensichtlich eine Referenzübertragung. Warum wird der Wert des Objekts nicht geändert?
Hier verwenden wir tatsächlich die Auto-Boxing-Funktion der Basisdatentyp-Kapselungsklasse.
Integer a = 5. Nach der Kompilierung ist es tatsächlich Integer a = Integer.valueOf(5). Wenn man sich den Quellcode von Integer ansieht, ändert es nicht den Wert des ursprünglichen Objekts, sondern zeigt nur darauf Verweis auf ein anderes Objekt.
Der Prozess im Codeausschnitt 3 kann durch die folgende Abbildung dargestellt werden:
ändert direkt den Stapelrahmen Die Adresse verweist auf ein anderes Objekt, sodass der ursprüngliche Wert nicht geändert wird.
[Empfohlener Kurs: Java Video Tutorial]
Das obige ist der detaillierte Inhalt vonZwei Möglichkeiten, Java-Methodenparameter zu übergeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!