Die von Programmieranfängern am häufigsten gestellte Frage ist, wie Parameter in Java übergeben werden. In der Regel verwenden Programmiersprachen die Wertübergabe und die Referenzübergabe, um Parameter an Methoden zu übergeben. Allerdings unterstützt Java diese beiden Methoden nicht und verwendet stattdessen die Wertübergabe, um Grund- und Referenztypwerte zu übergeben. In diesem Artikel erfahren Sie, wie Sie Parameter anhand eines Beispielprogramms übergeben.
Beginnen wir die Diskussion damit, den Speichermechanismus von Java zu verstehen. Die Namen von Referenzvariablen, Methoden und Klassen werden auf dem Stapel und ihre Werte auf dem Heap gespeichert. Allerdings werden Grundelemente und ihre Werte direkt im Stapelspeicher gespeichert.
Wie bereits erwähnt, unterstützt Java nur die Wertübergabe von Basistypen und Referenztypen, was bedeutet, dass beim Aufruf einer Methode eine Kopie jedes Parameterwerts an die Methode übergeben wird
Bei Basistypen wie int, double und Boolean ist der Wert des Parameters derselbe wie der ursprüngliche Wert der Variablen. Wenn wir beispielsweise eine Variable „x“ mit dem Wert 10 haben und „x“ als Argument an eine Methode übergeben, erhält die Methode eine Kopie des ursprünglichen Werts 10 als Argument.
Da Referenzvariablen auf dem Stapel gespeichert werden, ist der Wert des Parameters für Referenztypen wie Arrays, Objekte und Zeichenfolgen die Referenz oder Adresse der angegebenen Variablen. Wenn wir beispielsweise ein Array „arr“ mit den Elementen {1, 2, 3} haben und „arr“ als Parameter an eine Methode übergeben, dann erhält die Methode eine Referenz oder eine Kopie der Adresse von „arr“ als sein Parameter.
Lassen Sie uns einige Begriffe im Zusammenhang mit der Parameterübergabe in Java besprechen
Methoden sind Codeblöcke, die mehrfach wiederverwendet werden können, um einen einzelnen Vorgang auszuführen. Es spart uns Zeit und reduziert auch die Codegröße.
accessSpecifier nonAccessModifier return_Type method_Name(Parameters) { // Body of the method }
Hier,
accessSpecifier – wird verwendet, um die Zugänglichkeit einer Methode festzulegen. Es kann öffentlich, geschützt, standardmäßig und privat sein.
nonAccessModifier – Zeigt zusätzliche Funktionalität oder Verhalten einer Methode wie statisch und final an.
return_Type – Der Datentyp, den die Methode zurückgibt. Wir verwenden das Schlüsselwort void, wenn eine Methode nichts zurückgibt.
Parameter – sind benannte Variablen, die während der Methodendefinition übergeben und als Platzhalter für Parameter verwendet werden. Sie importieren die Parameter tatsächlich in die angegebene Methode. Sie ermöglichen die Verallgemeinerung von Methoden. Generalisierung bedeutet hier, dass wir eine einzelne Methode bei Bedarf für verschiedene Daten wiederverwenden können.
Parameter – sind die tatsächlichen Werte, die beim Aufruf der Methode übergeben werden. Sie müssen mit den in der Methodendefinition übergebenen Parametertypen übereinstimmen.
Durch die Übergabe von Parametern auf diese Weise wird eine Kopie des Parameterwerts an die angegebene Methode übergeben. Diese Methode kann die Kopie ändern, aber den ursprünglichen Wert des Parameters nicht beeinflussen.
Bei dieser Art der Parameterübergabe wird die Referenz oder Adresse des Parameters an die angegebene Methode übergeben. Diese Methode kann den ursprünglichen Wert des Parameters durch Referenz ändern
Definieren Sie zwei benutzerdefinierte Methoden. Die Methode „changeVal()“ wird zum Ändern des Originaltyps und die Methode „changeAray()“ zum Ändern des Referenztyps verwendet.
Deklarieren und initialisieren Sie in der main()-Methode einen ganzzahligen Typwert und einen Referenztypwert.
Rufen Sie nun diese benutzerdefinierten Methoden auf, um die Aktion auszuführen und zu beenden
import java.util.*; public class ParameterPassing { public static void changeVal(int n) { n = n * 2; // modifying value System.out.println("Inside method: n = " + n); } public static void changeAray(int[] a) { a[0] = a[0] * 2; // modifying value System.out.println("Inside method: a = " + Arrays.toString(a)); } public static void main(String[] args) { // for the Primitive type int val1 = 10; System.out.println("Before calling changeVal method: val1 = " + val1); changeVal(val1); // calling the method System.out.println("After calling changeVal method: val1 = " + val1); // for Reference type int[] aray = {1, 2, 3}; System.out.println("Before calling changeAray method: arr = " + Arrays.toString(aray)); changeAray(aray); // calling the method System.out.println("After calling changeAray method: arr = " + Arrays.toString(aray)); } }
Before calling changeVal method: val1 = 10 Inside method: n = 20 After calling changeVal method: val1 = 10 Before calling changeAray method: arr = [1, 2, 3] Inside method: a = [2, 2, 3] After calling changeAray method: arr = [2, 2, 3]
Wie Sie in der Ausgabe sehen können, ändert sich der Wert des primitiven Typs „val1“ nach dem Aufruf der Methode „changeVal“ nicht. Für den Referenztyp „arr“ ändert sich sein Wert nach dem Aufruf der Methode „changeAray“.
In diesem Artikel haben wir etwas über benutzerdefinierte Methoden gelernt und anhand eines Beispiels erläutert, wie Methodenparameter in Java übergeben werden. Die Übergabe eines Werts eines Referenztyps als Parameter ist nicht dasselbe wie die eines primitiven Typs. Java unterstützt nur die Übergabe von Verweisen auf nicht-primitive Typen, um deren Status, nicht jedoch ihre Identität zu ändern.
Das obige ist der detaillierte Inhalt vonWie werden in Java Parameter übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!