DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

13章74

問題には、Javaにおける配列のクローンと参照に関する内容が含まれています。選択肢ごとに説明します:

  1. 配列の定義とクローニング

    • array1は2次元のchar型配列で、{'a', 'b'}{'c', 'd'} の二つの配列を含んでいます。
    • array2array1の浅いコピー(shallow copy)を作成します。これはarray1の各要素(配列)への参照をコピーするだけです。array1array2は同じ内部配列を指しています。
    • array3array1[1]{'c', 'd'}を指す配列)の深いコピーを作成します。これは新しい配列オブジェクトを作成し、その内容をコピーします。
  2. 選択肢の評価

    • A: array1[1] == array3falsearray3array1[1]のコピーを持つ新しい配列であり、異なるオブジェクトを参照しています。
    • B: array1[1] == array3[1]falsearray3は単一の配列であり、array3[1]は存在しないため、この比較は意味をなしません。
    • C: array1[1] == array2[1]truearray1array2は浅いコピーであるため、array1[1]array2[1]は同じ配列({'c', 'd'})を指しています。
    • D: array1.equals(array2)false。Javaにおいて、配列のequalsメソッドはオブジェクトの参照を比較しますが、配列ではオーバーライドされていないため、array1array2が異なるオブジェクトとして判断されます(ただし、内容は同じです)。

以上の説明で、選択肢Cが正しい理由が明らかになり、他の選択肢がなぜ誤りであるかも理解できるかと思います。

Top comments (0)