プリミティブ型の値渡し
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がオススメ!同僚に差をつけよう!