本文へスキップ
T2R tech2rich.com
プログラミング 📚 Java入門 第5回 #Java #入門 #プログラミング初心者 #配列 #Array

【Java入門 第5回】配列(Array)を完全マスター|宣言・初期化・要素の取り出し方

Javaの配列(Array)を完全初心者向けに徹底解説。なぜ配列が必要なのか、宣言と初期化の3パターン、要素のアクセス、よくあるエラーの対処法まで丁寧に解説します。

📅 公開: 2026.05.18 🔄 更新: 2026.05.18 ⏱ 読了 約8分 ✍ 管理人

第4回では、繰り返し処理(for 文・while 文)を学びました。 今回はいよいよ、「複数のデータをまとめて扱う」 ためのとても重要な機能 ── 配列(Array) を学びます。

「配列って言葉は聞いたことあるけど、なんだか難しそう…」と感じている方もご安心ください。 配列はマンションの部屋番号のようなもの、と理解すれば一気にイメージがつかめます。順番にゆっくり進めていきましょう。

先輩

この記事のゴール

「配列とは何か」「どう書くか」「実際にどう使うか」「ハマりがちなエラー」までを、一度に理解できる状態になることです。

そもそも配列とは?(現実世界のたとえで理解する)

ここまで学んできた変数は、「1 つの箱に 1 つのデータ」 を入れる仕組みでした。

int score1 = 80;
int score2 = 75;
int score3 = 90;

3 つくらいなら手書きでも OK ですが、クラス 30 人分の点数を扱うとなると…30 個の変数を作るのは現実的ではありません。 そこで登場するのが 配列(Array) です。

💡 イメージ: 配列は 「番号付きのロッカー」 のようなもの。 1 つの「箱の集まり」に名前を付け、0 番・1 番・2 番… と番号で各箱にアクセスできます。

配列の名前0 番1 番2 番3 番4 番
scores8075906085

これを Java で書くと、たった 1 行です。

int[] scores = {80, 75, 90, 60, 85};

これだけで 5 個の数値をまとめて保存 できます。とても便利ですね。

配列の宣言と初期化(3 パターン)

配列を作る書き方は、主に 3 パターンあります。初心者がまず覚えるべきは下記のパターン①です。

パターン① 中身を直接書く(もっとも簡単)

int[] scores = {80, 75, 90, 60, 85};
部分意味
int[]int 型の配列」という型を宣言
scores配列の名前(変数名と同じルール)
=代入
{80, 75, 90, 60, 85}中身を 波カッコ {} で囲み、カンマ区切りで列挙

パターン② サイズだけ先に決めて、後から値を入れる

int[] scores = new int[5];   // サイズ5の空の配列を作成
scores[0] = 80;
scores[1] = 75;
scores[2] = 90;
scores[3] = 60;
scores[4] = 85;

💡 new キーワード「新しいメモリ領域を確保する」 という意味。今は「配列を作るときに必要なおまじない」と理解すれば OK です。

パターン③ 宣言と new を別の行で書く

int[] scores;          // 宣言だけ
scores = new int[5];   // 後で配列を作成

実務では パターン①(直接書く)が圧倒的に多く使われます。まずはこのパターンに慣れましょう。

配列の要素にアクセスする(0 から始まる!)

配列の各要素には、インデックス(添字) という番号でアクセスできます。

超重要: 配列のインデックスは 1 ではなく 0 から始まります。これは初心者がもっとも混乱するポイントです。

// 5 個の int をまとめた配列を作成
int[] scores = {80, 75, 90, 60, 85};
//              ↑   ↑   ↑   ↑   ↑
//        index: 0   1   2   3   4   (0 から始まる!)

System.out.println(scores[0]);  // scores の 0 番目を取り出す → 80
System.out.println(scores[2]);  // scores の 2 番目を取り出す → 90
System.out.println(scores[4]);  // scores の 4 番目を取り出す → 85(最後の要素)

「5 個入っているから scores[5] でアクセスできる」と思いがちですが、scores[5] はエラーになります。5 個入っている配列のインデックスは 0〜4 までです。

配列の長さを取得する length

要素数が分からないときは、.length で取得できます。

int[] scores = {80, 75, 90, 60, 85};
System.out.println(scores.length);  // 出力: 5

💡 String 型では .length()カッコ付き、配列では .lengthカッコなしです。違いに注意!

配列とループの組み合わせ(これが配列の真価)

配列の真価は ループと組み合わせた時 に発揮されます。30 人分の点数の合計を、たった数行で計算できます。

for 文との組み合わせ

int[] scores = {80, 75, 90, 60, 85};            // 5 要素の配列
int total = 0;                                   // 合計を入れる箱

// i を 0 から scores.length(=5)未満まで増やしながら繰り返す
for (int i = 0; i < scores.length; i++) {        // i: 0, 1, 2, 3, 4 と動く
    total = total + scores[i];                   // scores[i] を total に加算
}                                                 // ループ終了時、total = 390

System.out.println("合計: " + total);                            // → 合計: 390
System.out.println("平均: " + total / scores.length);            // → 平均: 78(390 / 5 の整数除算)

1 行ずつの意味:

拡張 for 文(for-each)のほうがシンプル

第4回 で学んだ拡張 for 文を使うと、もっとシンプルに書けます。

int[] scores = {80, 75, 90, 60, 85};
int total = 0;

for (int s : scores) {
    total += s;
}

System.out.println("合計: " + total);  // 390

💡 total += stotal = total + s の省略形です。Java では += -= *= /= のような 複合代入演算子がよく使われます。

ハマりがちなエラー TOP3

エラー① ArrayIndexOutOfBoundsException(範囲外アクセス)

int[] arr = {10, 20, 30};
System.out.println(arr[3]);  // ❌ エラー!

原因: 3 要素の配列のインデックスは 0〜2arr[3] は存在しません。 対処: ループ条件は i < arr.length で書くクセを付ける(<= ではない!)。

エラー② 配列の比較で == を使ってしまう

int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b);  // false(値ではなく参照を比較するため)

対処: 配列の中身を比較したいときは Arrays.equals(a, b) を使う。

import java.util.Arrays;
System.out.println(Arrays.equals(a, b));  // true

エラー③ 配列を System.out.println でそのまま出す

int[] arr = {1, 2, 3};
System.out.println(arr);  // [I@1540e19d のような変な文字列が出る

対処: 中身を見たいときは Arrays.toString(arr) を使う。

System.out.println(Arrays.toString(arr));  // [1, 2, 3]
編集部より

編集部からのポイント

配列はあらゆるプログラムで使われる基礎中の基礎。0 始まりlength の 2 つさえ押さえれば、ほぼ困ることはありません!

練習問題

以下のプログラムを書いてみましょう。

5 人のテストの点数 {72, 85, 60, 94, 50} から、合計点・平均点・最高点 を計算して表示してください。

解答例

public class ScoreStats {
    public static void main(String[] args) {
        int[] scores = {72, 85, 60, 94, 50};       // 5 人分のテスト点数

        int total = 0;                              // 合計
        int max = scores[0];                        // 最大値の候補(最初は配列の 0 番目を仮置き)

        // 拡張 for 文で配列の全要素を 1 つずつ s に取り出す
        for (int s : scores) {
            total += s;                              // 合計に加算
            if (s > max) {                           // 現在の最大値より大きい場合
                max = s;                             // 最大値を更新
            }
        }

        System.out.println("合計: " + total);                         // → 361
        System.out.println("平均: " + total / scores.length);         // → 72(整数除算で切り捨て)
        System.out.println("最高点: " + max);                          // → 94
    }
}

実行結果:

合計: 361
平均: 72
最高点: 94

まとめ

第 5 回では、以下を学びました。

次回は、**処理をまとめて再利用できる「メソッド」**を学びます。 コードがどんどん整理されていく感動を体験できますよ。お楽しみに!

関連の技術記事