配列の代入は参照のコピー
出力はどれか。
public class Main {
public static void main(String[] args) {
int[] a = {1, 2};
int[] b = a;
b[0] = 9;
a = new int[] {5};
System.out.println(b[0] + " " + a[0]);
}
}
- A
9 5 - B
1 5 - C
9 9 - D
5 5
正解と解説を見る
正解: A
- A: b は最初の配列を指したまま (b[0] は 9)、a は新しい配列 {5} を指します。
- B:
b = aで同じ配列を指しているので、b[0] = 9 は最初の配列を書き換えます。 - C: a は最後に新しい配列 {5} を指すので、a[0] は 5 です。
- D: a を別の配列に向け直しても、b は最初の配列を指したままです。
ポイント
b = aは同じ配列を指す参照をコピーします。b から書き換えると最初の配列が変わります。- その後 a を別の配列に向け直しても、b は最初の配列を指したままです。
「配列 (一次元配列、二次元配列) の宣言、インスタンス化、初期化および使用」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)