Java のパラメータ受け渡しメカニズムを探る: 値受け渡しと参照受け渡しの動作原理
Java は、クラスとオブジェクトに基づくオブジェクト指向プログラミング言語です。強力かつ柔軟なパラメータ受け渡しメカニズムを備えています。 Java では、パラメータの受け渡しは、値の受け渡しと参照の受け渡しの 2 つの方法に分けることができます。この記事では、これら 2 つのパラメーター受け渡しメカニズムがどのように機能するかを詳しく説明し、具体的なコード例を示します。
値の受け渡しとは、実パラメータの値を仮パラメータにコピーすることを指します。仮パラメータから実パラメータへの変更は、実パラメータ自体には影響しません。 Java では、すべての基本データ型 (int、float、boolean など) はパラメータを値で渡します。
簡単な例を使用して、値の受け渡しのメカニズムを説明します。
public class ValuePassingExample { public static void main(String[] args) { int num = 10; System.out.println("Before calling method: " + num); changeValue(num); System.out.println("After calling method: " + num); } public static void changeValue(int n) { n = 20; System.out.println("Inside Method: " + n); } }
上記のコードでは、整数パラメータ ## を受け入れる changeValue
メソッドを定義します。 #n を入力し、その値を 20 に変更します。
main メソッドでは、整数変数
num を作成し、それを 10 に初期化します。次に、
changeValue メソッドを呼び出し、パラメータとして
num を渡しました。
Before calling method: 10 Inside Method: 20 After calling method: 10
changeValue メソッドで
n の値を 20 に変更しましたが、メソッドが呼び出されます。終了後、
num の値は 10 のままです。これは、Java では、実パラメータの値を仮パラメータにコピーすることによって値の受け渡しが行われるため、仮パラメータを変更しても実パラメータ自体には影響しません。
public class ReferencePassingExample { public static void main(String[] args) { int[] arr = {1, 2, 3}; System.out.println("Before calling method: " + Arrays.toString(arr)); changeValue(arr); System.out.println("After calling method: " + Arrays.toString(arr)); } public static void changeValue(int[] array) { array[0] = 10; System.out.println("Inside Method: " + Arrays.toString(array)); } }
changeValue メソッドを定義しました。パラメータを使用して、配列の最初の要素の値を 10 に変更します。
main メソッドでは、3 つの整数を含む配列
arr を作成し、それを
changeValue メソッドに渡します。
Before calling method: [1, 2, 3] Inside Method: [10, 2, 3] After calling method: [10, 2, 3]
changeValue メソッドで配列の最初の要素の値を変更しましたが、メソッド呼び出し終了後、
arr は依然として同じ配列を指しており、配列の最初の要素の値も変更されています。これは、参照の受け渡しでは実パラメータと仮パラメータが同じオブジェクトを指すため、仮パラメータを変更すると実パラメータが参照するオブジェクトに影響を与えるためです。
以上がJava のパラメータ受け渡しメソッドの詳細な研究: 値受け渡しと参照受け渡しの原理とメカニズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。