Udemyの人気コースが今なら80%OFF!

【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」の値も変わってしまいます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です