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

Java の配列とは?配列の宣言、初期化、値の設定を初心者向けに解説!

093
Java の配列とは?配列の宣言、初期化、値の設定を初心者向けに解説!

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

新人

「Java で複数のデータをまとめて管理する方法はありますか?」

先輩

「それなら、配列を使うといいよ!配列を使えば、同じ種類のデータをひとまとめにして管理できるんだ。」

新人

「配列って何ですか?どのように使うんですか?」

先輩

「それじゃあ、Java の配列について基本から説明していこう!」

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

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

Java の 配列 は、同じ種類のデータをまとめて管理するための仕組みです。たとえば、5 人のテストの点数を管理する場合、それぞれの点数を別々の変数に保存すると管理が大変になりますが、配列を使えば簡単にまとめられます。

配列を使わない場合


public class NoArrayExample {
    public static void main(String[] args) {
        int score1 = 80;
        int score2 = 90;
        int score3 = 85;
        int score4 = 70;
        int score5 = 95;

        System.out.println("1人目の点数: " + score1);
        System.out.println("2人目の点数: " + score2);
        System.out.println("3人目の点数: " + score3);
        System.out.println("4人目の点数: " + score4);
        System.out.println("5人目の点数: " + score5);
    }
}

1人目の点数: 80
2人目の点数: 90
3人目の点数: 85
4人目の点数: 70
5人目の点数: 95

このように、それぞれのデータを個別の変数で管理すると、変数の数が増えてしまい管理が大変になります。そこで、配列を使うことで、より簡単にデータを扱うことができます。

配列を使った場合


public class ArrayExample {
    public static void main(String[] args) {
        int[] scores = {80, 90, 85, 70, 95};

        System.out.println("1人目の点数: " + scores[0]);
        System.out.println("2人目の点数: " + scores[1]);
        System.out.println("3人目の点数: " + scores[2]);
        System.out.println("4人目の点数: " + scores[3]);
        System.out.println("5人目の点数: " + scores[4]);
    }
}

1人目の点数: 80
2人目の点数: 90
3人目の点数: 85
4人目の点数: 70
5人目の点数: 95

このように、配列を使うことで、複数のデータを簡単に管理できるようになります。

2. 配列の宣言と初期化(基本的な使い方)

2. 配列の宣言と初期化(基本的な使い方)
2. 配列の宣言と初期化(基本的な使い方)

Java で配列を使うためには、まず配列を 宣言 し、データを入れるための 初期化 を行います。

配列の宣言

Java では、次のようにして配列を宣言できます。


int[] numbers;  // 整数型の配列を宣言

ここで、int[] numbers; は「整数型の配列」を意味します。ただし、この時点ではデータを格納できません。

配列の初期化(要素数を指定する)

配列を使うためには、メモリを確保する必要があります。次のように記述することで、配列を初期化できます。


numbers = new int[5];  // 要素数5の配列を確保

このように、new int[5] と書くことで、5つの整数を格納できる配列を作成できます。

配列の宣言と初期化を同時に行う

通常、配列の宣言と初期化は同時に行うことが多いです。


int[] numbers = new int[5];  // 要素数5の整数型配列を宣言

この書き方なら、配列を宣言しつつ、すぐに初期化することができます。

配列の初期化(値を直接指定する)

配列の初期値を指定する場合は、次のように書くこともできます。


int[] numbers = {10, 20, 30, 40, 50};  // 直接値を指定

この場合、配列のサイズを指定する必要はなく、自動的に 5 要素の配列が作成されます。

配列の要素を設定する

配列の要素には、次のようにして値を設定できます。


int[] numbers = new int[3]; // 3つの要素を持つ配列を作成
numbers[0] = 100; // 1つ目の要素に100を代入
numbers[1] = 200; // 2つ目の要素に200を代入
numbers[2] = 300; // 3つ目の要素に300を代入

System.out.println(numbers[0]); // 100
System.out.println(numbers[1]); // 200
System.out.println(numbers[2]); // 300

100
200
300

このように、配列の各要素には 配列名[インデックス] という書き方でアクセスできます。

3. 配列の要素を取得する方法(array[0] の基本)

3. 配列の要素を取得する方法(array[0] の基本)
3. 配列の要素を取得する方法(array[0] の基本)

Java の配列では、各データ(要素)に番号(インデックス)を使ってアクセスします。最初の要素は 0 番目から始まり、次の要素は 1 番目、というように番号がついています。

配列の要素にアクセスする基本


public class ArrayAccess {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        System.out.println("1つ目の要素: " + numbers[0]); // 10
        System.out.println("2つ目の要素: " + numbers[1]); // 20
        System.out.println("3つ目の要素: " + numbers[2]); // 30
    }
}

1つ目の要素: 10
2つ目の要素: 20
3つ目の要素: 30

このように、配列名[インデックス] という書き方をすると、その位置のデータを取得できます。

注意:配列の範囲外を指定するとエラーになる

配列の範囲外の要素を取得しようとするとエラー(ArrayIndexOutOfBoundsException)になります。


public class ArrayOutOfBounds {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30};

        System.out.println(numbers[3]); // 存在しないインデックス
    }
}

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3

配列のインデックスは 0 から始まり、最後の要素は 配列の長さ - 1 になります。

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

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

※ Amazon広告リンク

4. 配列の長さを調べる(length プロパティの使い方)

4. 配列の長さを調べる(length プロパティの使い方)
4. 配列の長さを調べる(length プロパティの使い方)

配列の長さ(要素の数)は、length プロパティを使うことで取得できます。

length を使って配列の長さを取得


public class ArrayLength {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};
        
        System.out.println("配列の長さ: " + numbers.length);
    }
}

配列の長さ: 5

このように、配列名.length を使うことで、配列の要素の数を簡単に取得できます。

length を使って最後の要素を取得する


public class LastElement {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        System.out.println("最後の要素: " + numbers[numbers.length - 1]);
    }
}

最後の要素: 50

この方法を使えば、配列の長さが変わっても、常に最後の要素を取得できます。

5. 配列をループで操作する(for 文と拡張 for 文)

5. 配列をループで操作する(for 文と拡張 for 文)
5. 配列をループで操作する(for 文と拡張 for 文)

配列のデータをすべて表示する場合、一つずつ指定すると大変ですが、for 文拡張 for 文 を使うと簡単に処理できます。

for 文を使った配列の操作


public class ArrayLoop {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        for (int i = 0; i < numbers.length; i++) {
            System.out.println("要素 " + i + ": " + numbers[i]);
        }
    }
}

要素 0: 10
要素 1: 20
要素 2: 30
要素 3: 40
要素 4: 50

このように、for 文 を使うと、すべての要素に順番にアクセスできます。

拡張 for 文を使った配列の操作

Java では、拡張 for 文(for-each 文)を使うと、より簡単に配列の要素を取得できます。


public class EnhancedForLoop {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        for (int num : numbers) {
            System.out.println("値: " + num);
        }
    }
}

値: 10
値: 20
値: 30
値: 40
値: 50

このように、拡張 for 文では、配列の要素を順番に取り出して処理できます。

for 文と拡張 for 文の違い

  • for 文 … 配列のインデックスを使って要素にアクセスできる
  • 拡張 for 文 … すべての要素を簡単に取り出せるが、インデックスを取得できない

用途に応じて使い分けましょう。

6. 配列の値を変更する方法(値の上書き)

6. 配列の値を変更する方法(値の上書き)
6. 配列の値を変更する方法(値の上書き)

配列の要素は、あとから値を変更(上書き)することができます。特定のインデックスを指定して、新しい値を代入するだけです。

配列の値を変更する基本


public class ArrayUpdate {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        numbers[2] = 100; // 3番目の要素を100に変更

        System.out.println("変更後の配列:");
        for (int num : numbers) {
            System.out.println(num);
        }
    }
}

変更後の配列:
10
20
100
40
50

このように、numbers[2] = 100; と書くことで、配列の3番目の要素を変更できます。

ループを使って値を変更する

配列のすべての要素を変更したい場合は、for ループを使うと便利です。


public class ArrayUpdateLoop {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        // すべての値を2倍に変更
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] *= 2;
        }

        System.out.println("すべての値を2倍に変更:");
        for (int num : numbers) {
            System.out.println(num);
        }
    }
}

すべての値を2倍に変更:
20
40
60
80
100

この方法を使えば、配列のすべての要素に対して一括で処理を行うことができます。

7. 配列の中から特定の値を探す方法(線形探索)

7. 配列の中から特定の値を探す方法(線形探索)
7. 配列の中から特定の値を探す方法(線形探索)

配列の中から特定の値を探す方法はいくつかありますが、最も基本的なのが 線形探索 です。

線形探索とは?

線形探索(リニアサーチ)は、配列の最初から順番に調べていき、目的の値を見つける方法です。

線形探索のコード


public class LinearSearch {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};
        int target = 30; // 探したい値
        boolean found = false;

        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] == target) {
                System.out.println(target + " は配列の " + i + " 番目にあります。");
                found = true;
                break; // 見つかったらループを終了
            }
        }

        if (!found) {
            System.out.println(target + " は配列に含まれていません。");
        }
    }
}

30 は配列の 2 番目にあります。

この方法を使うと、配列の中に目的の値があるかどうかを簡単に調べることができます。

複数の値を検索する

もし、配列の中に同じ値が複数ある場合、それをすべて探すこともできます。


public class FindAllOccurrences {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 30, 50};
        int target = 30;
        boolean found = false;

        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] == target) {
                System.out.println(target + " は配列の " + i + " 番目にあります。");
                found = true;
            }
        }

        if (!found) {
            System.out.println(target + " は配列に含まれていません。");
        }
    }
}

30 は配列の 2 番目にあります。
30 は配列の 4 番目にあります。

このようにして、配列の中のすべての該当する値を見つけることができます。

8. 練習問題:「配列の基本操作」を使ったプログラムを作ろう

8. 練習問題:「配列の基本操作」を使ったプログラムを作ろう
8. 練習問題:「配列の基本操作」を使ったプログラムを作ろう

最後に、これまで学んだ配列の基本操作を組み合わせて、簡単なプログラムを作成してみましょう。

練習問題:配列の最大値と最小値を求める

以下の配列から、最大の値と最小の値を求めるプログラムを作成してください。

実装例


public class FindMinMax {
    public static void main(String[] args) {
        int[] numbers = {25, 47, 89, 12, 94, 55, 38};
        
        int max = numbers[0]; // 最大値を初期化
        int min = numbers[0]; // 最小値を初期化

        for (int num : numbers) {
            if (num > max) {
                max = num;
            }
            if (num < min) {
                min = num;
            }
        }

        System.out.println("最大値: " + max);
        System.out.println("最小値: " + min);
    }
}

最大値: 94
最小値: 12

このプログラムでは、最初の要素を最大値・最小値の初期値として設定し、配列のすべての要素を順番に比較して最大・最小を見つけます。

練習問題の追加

以下の課題にも挑戦してみましょう。

  • 配列の平均値を求めるプログラムを作る
  • 配列の要素を逆順に表示するプログラムを作る
  • 偶数の数だけを表示するプログラムを作る

このような練習を通して、配列の扱いに慣れていきましょう!

課題1: 配列の平均値を求める

配列のすべての要素の合計を計算し、それを要素の数で割ることで平均値を求めます。


public class ArrayAverage {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }

        double average = (double) sum / numbers.length;
        System.out.println("配列の平均値: " + average);
    }
}

配列の平均値: 30.0

合計を計算し、配列の長さ で割ることで平均値を求めます。整数の計算になるので、(double) をつけて小数点も考慮しています。

課題2: 配列の要素を逆順に表示する

配列の最後の要素から順番に表示することで、逆順に表示するプログラムを作ります。


public class ReverseArray {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        System.out.println("配列を逆順に表示:");
        for (int i = numbers.length - 1; i >= 0; i--) {
            System.out.println(numbers[i]);
        }
    }
}

配列を逆順に表示:
50
40
30
20
10

for ループを使い、最後のインデックスから順番に値を取得することで逆順に表示できます。

課題3: 偶数の数だけを表示する

配列の要素の中から偶数だけを探し、それを表示するプログラムを作ります。


public class EvenNumbers {
    public static void main(String[] args) {
        int[] numbers = {10, 21, 32, 43, 54, 65, 76};

        System.out.println("偶数の要素:");
        for (int num : numbers) {
            if (num % 2 == 0) {
                System.out.println(num);
            }
        }
    }
}

偶数の要素:
10
32
54
76

num % 2 == 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広告リンク