問題には、Javaにおける配列のクローンと参照に関する内容が含まれています。選択肢ごとに説明します:
-
配列の定義とクローニング
-
array1
は2次元のchar
型配列で、{'a', 'b'}
と{'c', 'd'}
の二つの配列を含んでいます。 -
array2
はarray1
の浅いコピー(shallow copy)を作成します。これはarray1
の各要素(配列)への参照をコピーするだけです。array1
とarray2
は同じ内部配列を指しています。 -
array3
はarray1[1]
({'c', 'd'}
を指す配列)の深いコピーを作成します。これは新しい配列オブジェクトを作成し、その内容をコピーします。
-
-
選択肢の評価
-
A:
array1[1] == array3
→false
。array3
はarray1[1]
のコピーを持つ新しい配列であり、異なるオブジェクトを参照しています。 -
B:
array1[1] == array3[1]
→false
。array3
は単一の配列であり、array3[1]
は存在しないため、この比較は意味をなしません。 -
C:
array1[1] == array2[1]
→true
。array1
とarray2
は浅いコピーであるため、array1[1]
とarray2[1]
は同じ配列({'c', 'd'}
)を指しています。 -
D:
array1.equals(array2)
→false
。Javaにおいて、配列のequals
メソッドはオブジェクトの参照を比較しますが、配列ではオーバーライドされていないため、array1
とarray2
が異なるオブジェクトとして判断されます(ただし、内容は同じです)。
-
A:
以上の説明で、選択肢Cが正しい理由が明らかになり、他の選択肢がなぜ誤りであるかも理解できるかと思います。
Top comments (0)