Categories: Java

【Java入門】プリミティブ型の値渡しと、参照型の値渡し(参照渡し)

プリミティブ型の値渡し

Java

public static void main(String[] args) {

    //変数valueを「2」で初期化。
    int value = 2;

    //callメソッド実行
    call(value);

    //vauleの値を出力。
    System.out.println("呼び出し元:" + value);

}

private static void call(int value) {
    value = value * 2;

    System.out.println("呼び出し先:" + value);
}

実行結果

呼び出し先:4
呼び出し元:2

解説

int型など、プリミティブ型の変数を引数に渡す場合は、値そのものを渡すため、呼び出し元の変数「value」と呼び出し先の変数「value」は別々の値を保持します。そのため、呼び出し先のメソッド内で変数「value」の値を書き換えても、呼び出し元の変数「value」の値には影響しません。

参照型の値渡し

Java

public static void main(String[] args) {

    //変数arrayを「2」で初期化。
    int[] array = {1,2,3,4,5};

    //callメソッド実行
    call(array);

    //arrayの値を出力。
    System.out.println("呼び出し元:" + array[2]);

}

private static void call(int[] array) {
    array[2] = 100;

    System.out.println("呼び出し先:" + array[2]);
}

実行結果

呼び出し先:100
呼び出し元:100

解説

配列などの参照型の変数を引数に渡す場合は、値ではなく、「参照」を渡すため、呼び出し元の変数「array」と呼び出し先の変数「array」は同じメモリを共有することになります。そのため、呼び出し先のメソッド内で変数「array」の値を書き換えると、呼び出し元の変数「array」の値も変わってしまいます。

以上で記事の解説はお終い!

もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!

issiki_wp