Java | レベル別練習問題:配列のコピー

Java Java
スポンサーリンク

レベル別に練習問題を増やしてみましょう。配列コピーの理解を深めるために、初級・中級・上級の3段階で課題を用意しました。


初級(基本を確認)

  1. コピーと代入の違いを確認
    • int[] a = {1,2,3}; を作り、int[] b = a;int[] c = Arrays.copyOf(a, a.length); を用意。
    • b[0]c[0] を変更して、a にどう影響するかを出力してみよう。
  2. 部分コピーの練習
    • int[] nums = {10,20,30,40,50}; から System.arraycopy を使って中央の [20,30,40] を取り出す。

👉 ゴール: 「代入はコピーじゃない」「コピー方法によって結果が違う」を体感する。


中級(応用)

  1. 配列の拡張
    • int[] a = {1,2,3};Arrays.copyOf で長さ5に拡張し、余った部分がどうなるか確認。
  2. コピーしてソート
    • int[] data = {5,3,9,1}; をコピーして、コピー先だけソート。
    • 元の配列とコピー先を両方出力して違いを確認。
  3. 文字列配列のコピー
    • String[] words = {"apple","banana","cherry"}; をコピーして、コピー先だけ1つ書き換える。
    • 元の配列に影響があるか確認。

👉 ゴール: 「コピーした配列を独立して操作できる」ことを理解する。


上級(オブジェクトと深いコピー)

  1. 浅いコピーの確認
    • Book クラス(titleフィールドのみ)を作り、Book[] 配列をコピー。
    • コピー先の title を変更して、元の配列に影響するか確認。
  2. 深いコピーの実装
    • 上の Book[] を for文で新しい Book を作り直してコピー。
    • コピー先を変更しても元に影響しないことを確認。
  3. 複雑なオブジェクトのコピー
    • Student クラス(nameint[] scoresを持つ)を作り、Student[] をコピー。
    • 浅いコピーだと scores が共有されることを確認。
    • 深いコピーを実装して、scores も独立させる。

👉 ゴール: 「浅いコピーと深いコピーの違い」を理解し、必要に応じて深いコピーを作れるようになる。


練習の進め方

  • 初級: まずは「コピーと代入の違い」を確実に理解。
  • 中級: 実用的な場面(拡張・ソート・文字列)でコピーを使う。
  • 上級: オブジェクト配列で「浅いコピー/深いコピー」の違いを体感。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました