🐥

Javaの引数に配列を渡す書き方

2023/10/10に公開

配列をメソッドに渡す方法

public int sum(int[] x) {
        x[0] = x[0] + 1;
        x[1] = x[1] + 1;
        x[2] = x[2] + 1;
        return x[0] + x[1] + x[2];
    }
    public static void main(String[] args) {
        Main ex = new Main();
        int[] nums = new int[3];
        nums[0] = 1;
        nums[1] = 2;
        nums[2] = 3;
        System.out.println("nums= " + nums[0] + " " + nums[1] + " " + nums[2]);
        int allNum = ex.sum(nums);
        System.out.println("nums= " + nums[0] + " " + nums[1] + " " + nums[2]);
        System.out.println("allNum=" + allNum);
    }
}
実行結果
nums= 1 2 3
nums= 2 3 4
allNum=9

このコードでは、mainメソッドがMainクラスのインスタンスを割り当て、int型でサイズが3の配列を宣言し、各配列要素に値を入れてます。
次に、配列がメソッドに渡されます
これはメモリ(参照先)のアドレスであり、そのアドレスがメソッドに渡されて配列のローカル変数xに割り当てられています。
int型の配列をパラメータに指定しないと受け取れませんので注意してください。

次に、メソッドではローカル変数x要素が変更されます。ただし、ローカル変数xは配列のアドレス(参照先)があるため、実際には、数値とまったく同じアドレス(参照先)に変更しています。
2人が共有する郵便受けのような場所をイメージください。どちらかの人が手紙を取り出したりしたら、その郵便受けは共有しているので、もう一人の人にも影響してしまいます。
したがって、メインメソッドに戻って配列の内容を出力すると、メソッドで変更された値が入っています。

Discussion