カテゴリ: Javaの配列 更新日: 2025/04/29

Java の配列の要素をコピーする「Arrays.copyOf()」の基本

102
Java の配列の要素をコピーする「Arrays.copyOf()」の基本

新人と先輩の会話形式で理解しよう

新人

「Java で配列のデータをコピーする方法はありますか?」

先輩

「あるよ!Java では Arrays.copyOf() を使うと簡単に配列をコピーできるんだ。」

新人

「それは便利ですね!どうやって使うんですか?」

先輩

「それじゃあ、まず配列の基本から見ていこう!」

1. Java の配列とは?(基本的な説明)

1. Java の配列とは?(基本的な説明)
1. Java の配列とは?(基本的な説明)

Java の配列とは、複数のデータをまとめて扱うための仕組みです。配列を使うことで、同じ種類のデータを効率的に管理できます。

配列の基本的な宣言方法


public class ArrayExample {
    public static void main(String[] args) {
        // 整数型の配列を作成
        int[] numbers = {10, 20, 30, 40, 50};

        // 配列の中身を表示
        System.out.println("配列の要素:");
        for (int num : numbers) {
            System.out.print(num + " ");
        }
    }
}

配列の要素:
10 20 30 40 50

2. 配列のコピーとは?(基本概念)

2. 配列のコピーとは?(基本概念)
2. 配列のコピーとは?(基本概念)

配列のコピーとは、元の配列のデータを別の配列に複製することを指します。

なぜ配列をコピーするのか?

  • ✔ 元の配列を変更せずに別のデータを保持したい
  • ✔ 配列のサイズを変更したい
  • ✔ 一部のデータだけを抜き出したい

配列のコピー方法の種類

  • Arrays.copyOf() を使う
  • System.arraycopy() を使う
  • for ループを使う

この中でも、Arrays.copyOf() は簡単に配列をコピーできる方法です。次の章で詳しく解説します。

3. Arrays.copyOf() を使った基本的なコピー方法

3. Arrays.copyOf() を使った基本的なコピー方法
3. Arrays.copyOf() を使った基本的なコピー方法

Java で配列をコピーする方法の一つに Arrays.copyOf() があります。このメソッドを使うと、簡単に配列をコピーできます。

Arrays.copyOf() の基本構文


import java.util.Arrays;

public class CopyArrayExample {
    public static void main(String[] args) {
        // 元の配列
        int[] original = {1, 2, 3, 4, 5};

        // 配列をコピー
        int[] copied = Arrays.copyOf(original, original.length);

        // コピー後の配列を表示
        System.out.println("コピー後の配列:");
        for (int num : copied) {
            System.out.print(num + " ");
        }
    }
}

コピー後の配列:
1 2 3 4 5

このように Arrays.copyOf() を使うと、元の配列の全ての要素をコピーすることができます。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 配列の一部をコピーする方法

4. 配列の一部をコピーする方法
4. 配列の一部をコピーする方法

Arrays.copyOf() を使えば、配列の一部だけをコピーすることも可能です。

配列の一部をコピーする例


import java.util.Arrays;

public class PartialCopyExample {
    public static void main(String[] args) {
        // 元の配列
        int[] original = {10, 20, 30, 40, 50};

        // 最初の3つの要素をコピー
        int[] partialCopy = Arrays.copyOf(original, 3);

        // コピー後の配列を表示
        System.out.println("一部コピー後の配列:");
        for (int num : partialCopy) {
            System.out.print(num + " ");
        }
    }
}

一部コピー後の配列:
10 20 30

指定したサイズ分だけコピーされるため、配列の一部分を取得するのに便利です。

5. 配列のサイズを変更しながらコピーする方法

5. 配列のサイズを変更しながらコピーする方法
5. 配列のサイズを変更しながらコピーする方法

Arrays.copyOf() は、配列のサイズを変更しながらコピーすることも可能です。

サイズを変更してコピーする例


import java.util.Arrays;

public class ResizeArrayExample {
    public static void main(String[] args) {
        // 元の配列
        int[] original = {5, 10, 15};

        // サイズを大きくしてコピー
        int[] extendedArray = Arrays.copyOf(original, 5);

        // コピー後の配列を表示
        System.out.println("サイズ変更後の配列:");
        for (int num : extendedArray) {
            System.out.print(num + " ");
        }
    }
}

サイズ変更後の配列:
5 10 15 0 0

サイズを大きくした場合、追加された部分にはデフォルト値(int の場合は 0)が入ります。

6. Arrays.copyOf() と System.arraycopy() の違い

6. Arrays.copyOf() と System.arraycopy() の違い
6. Arrays.copyOf() と System.arraycopy() の違い

Java には配列をコピーする方法が複数あります。その中でも Arrays.copyOf()System.arraycopy() はよく使われるメソッドです。

Arrays.copyOf() の特徴

  • ✔ 配列のサイズ変更ができる
  • ✔ 簡単な記述でコピー可能
  • ✔ 新しい配列を作成して返す

System.arraycopy() の特徴

  • ✔ コピー元の配列と同じサイズを維持
  • ✔ コピー範囲を細かく指定できる
  • Arrays.copyOf() よりも処理が高速

System.arraycopy() の使い方


public class ArrayCopyExample {
    public static void main(String[] args) {
        int[] original = {10, 20, 30, 40, 50};
        int[] copied = new int[3];

        // System.arraycopy(元の配列, 開始位置, コピー先, コピー開始位置, 長さ)
        System.arraycopy(original, 1, copied, 0, 3);

        System.out.println("コピー後の配列:");
        for (int num : copied) {
            System.out.print(num + " ");
        }
    }
}

コピー後の配列:
20 30 40

System.arraycopy() を使うと、部分的に配列をコピーできるので、特定の範囲をコピーしたい場合に便利です。

7. 配列のコピーを応用した実践例

7. 配列のコピーを応用した実践例
7. 配列のコピーを応用した実践例

ここでは、配列のコピーを活用して、実際のプログラムを作成してみましょう。

例:配列のサイズを2倍に拡張


import java.util.Arrays;

public class ExpandArray {
    public static void main(String[] args) {
        int[] original = {1, 2, 3, 4, 5};
        
        // 配列のサイズを2倍に拡張
        int[] expanded = Arrays.copyOf(original, original.length * 2);

        System.out.println("拡張後の配列:");
        for (int num : expanded) {
            System.out.print(num + " ");
        }
    }
}

拡張後の配列:
1 2 3 4 5 0 0 0 0 0

このように、配列を動的に拡張して、新しい要素を追加できるようにすることができます。

8. 練習問題:「配列をコピーするコードを書こう」

8. 練習問題:「配列をコピーするコードを書こう」
8. 練習問題:「配列をコピーするコードを書こう」

以下の条件に従って、配列のコピーを行うプログラムを作成してください。

問題

  • ✔ 整数の配列 {5, 10, 15, 20, 25} を作成する
  • Arrays.copyOf() を使って配列をコピーする
  • ✔ コピー後の配列のサイズを 7 に変更する
  • ✔ コピーした配列の内容を表示する

解答


import java.util.Arrays;

public class CopyArrayPractice {
    public static void main(String[] args) {
        int[] original = {5, 10, 15, 20, 25};

        // 配列をサイズ7に拡張してコピー
        int[] copied = Arrays.copyOf(original, 7);

        System.out.println("コピー後の配列:");
        for (int num : copied) {
            System.out.print(num + " ");
        }
    }
}

コピー後の配列:
5 10 15 20 25 0 0

この問題を解くことで、配列のコピー方法をしっかりと理解できるようになります。

Javaの配列の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク