ホームページ  >  記事  >  Java  >  Java のパラメータ受け渡しメソッドの詳細な研究: 値受け渡しと参照受け渡しの原理とメカニズム

Java のパラメータ受け渡しメソッドの詳細な研究: 値受け渡しと参照受け渡しの原理とメカニズム

PHPz
PHPzオリジナル
2024-01-30 08:05:18998ブラウズ

Java のパラメータ受け渡しメソッドの詳細な研究: 値受け渡しと参照受け渡しの原理とメカニズム

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 では、実パラメータの値を仮パラメータにコピーすることによって値の受け渡しが行われるため、仮パラメータを変更しても実パラメータ自体には影響しません。

次に、参照受け渡しの仕組みについて説明します。参照による受け渡しとは、実パラメータと仮パラメータがメモリ内の同じオブジェクトを指すように、オブジェクトへの参照を渡すことを意味します。 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 のパラメーター受け渡しメカニズムは、値の受け渡しと参照の受け渡しに分類できます。値による受け渡しはすべての基本データ型で機能しますが、参照による受け渡しはすべての非基本データ型で機能します。値の受け渡しでは、実パラメータの値が仮パラメータにコピーされ、仮パラメータを変更しても実パラメータ自体には影響しません。参照の受け渡しでは、実パラメータと仮パラメータは同じオブジェクトを指します。仮パラメータを変更しても、実際のパラメータ自体には影響しません。変更は、実パラメータによって参照されるオブジェクトに影響します。

これら 2 つのパラメータ受け渡しメカニズムの動作原理を深く理解することで、Java のメソッド呼び出しとオブジェクト操作をより深く理解し、プログラミングでそれらを正しく使用できるようになります。

以上がJava のパラメータ受け渡しメソッドの詳細な研究: 値受け渡しと参照受け渡しの原理とメカニズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。