Javaで、配列型データの参照先を変更する際の挙動についてご教示いただきたいです。
配列は参照型のため、再代入によって、別の配列に変えることができると認識しております。
以下のコードのmain関数において、arrにarr2を再代入すると、arrの参照先がarr2になることを
確認できました。
ところが、これと同じ処理をsub関数で実行したところ、arrの参照先は変わりませんでした。
main関数およびsub関数内で、配列の参照先を確認して、呼び出し先と呼び出し元で同じで
あることを確認しております。
この事象の原因について、どのように解釈すればよろしいでしょうか。
Java
import java.util.*; public class Main { public static void main(String[] args) throws Exception { int[] arr = new int[]{0,1,2}; int[] arr2 = new int[]{3,4,5}; System.out.println(arr); System.out.println(arr2); System.out.println(Arrays.toString(arr)); sub(arr,arr2); // sub関数実行時点で、arr={0,1,2} arr = arr2; // arr={3,4,5}となる。 System.out.println(Arrays.toString(arr)); } public static void sub(int[]arr, int[] arr2) { System.out.println(arr); System.out.println(arr2); arr = arr2; } }
まだ回答がついていません
会員登録して回答してみよう