問題には、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)