Java入門 #10 - 配列の基本

入門 | 10分 で読める | 2026.05.02

公式ドキュメント

この記事の要点

配列は同じ型の値を複数格納するデータ構造
• 宣言は int[] arr = new int[5]; または int[] arr = {1, 2, 3};
• 要素は arr[0] のようにインデックスでアクセス(0始まり)

このシリーズについて

「Java入門」は1本1テーマで進む全15回のシリーズです。本記事はその第10回として、配列の基本を扱います。

前提条件: Java 21 がインストール済み。変数、for文、while文の基本を理解していること。

配列とは

配列(Array) は同じ型の値を複数まとめて扱うデータ構造です。

特徴説明
固定長作成時にサイズが決まり、後から変更できない
インデックスアクセスarr[0], arr[1] のように位置で要素を取得
0始まり最初の要素は arr[0]、最後は arr[length - 1]
同じ型のみint[] なら整数のみ、String[] なら文字列のみ

配列を使わない場合、5つの値を扱うには5つの変数が必要です。

int score0 = 85;
int score1 = 90;
int score2 = 78;
int score3 = 92;
int score4 = 88;

配列なら1つの変数で管理できます。

int[] scores = {85, 90, 78, 92, 88};

配列の宣言と初期化

パターン1: サイズを指定して作成

[] 変数名 = new[サイズ];
// Java 21
public class ArrayDeclaration {
    public static void main(String[] args) {
        int[] numbers = new int[5];  // 要素数5の配列
        
        // 初期値は自動で 0 になる
        System.out.println(numbers[0]);  // → 0
    }
}
初期値
int, long, short, byte0
double, float0.0
booleanfalse
String, オブジェクトnull

パターン2: 初期値を指定して作成

[] 変数名 = {1,2,3, ...};
// Java 21
public class ArrayInitialization {
    public static void main(String[] args) {
        int[] scores = {85, 90, 78, 92, 88};
        
        System.out.println(scores[0]);  // → 85
        System.out.println(scores[4]);  // → 88
    }
}

ポイント: 初期値がわかっているなら {...} 記法が簡潔です。サイズだけ決めて後から値を入れる場合は new 型[サイズ] を使います。

要素へのアクセス

配列の要素はインデックス(添字)でアクセスします。インデックスは0から始まる点に注意してください。

// Java 21
public class ArrayAccess {
    public static void main(String[] args) {
        String[] fruits = {"Apple", "Banana", "Cherry"};
        
        System.out.println(fruits[0]);  // → Apple
        System.out.println(fruits[1]);  // → Banana
        System.out.println(fruits[2]);  // → Cherry
        
        // 値の変更
        fruits[1] = "Blueberry";
        System.out.println(fruits[1]);  // → Blueberry
    }
}
操作構文
値を取得変数名[インデックス]
値を変更変数名[インデックス] = 新しい値;

注意: 存在しないインデックスにアクセスすると ArrayIndexOutOfBoundsException(配列の範囲外例外)が発生します。

length プロパティ

配列の長さ(要素数)は .length で取得できます。

// Java 21
public class ArrayLength {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};
        
        System.out.println("配列の長さ: " + numbers.length);  // → 5
        
        // 最後の要素にアクセス
        System.out.println("最後の要素: " + numbers[numbers.length - 1]);  // → 50
    }
}
記法説明
arr.length配列の要素数(プロパティなのでカッコ不要
arr[arr.length - 1]最後の要素(長さが5なら arr[4]

補足: String の長さは str.length()(メソッド)ですが、配列は arr.length(プロパティ)です。カッコの有無に注意してください。

配列の走査(ループ)

通常のfor文

// Java 21
public class ArrayLoop {
    public static void main(String[] args) {
        int[] scores = {85, 90, 78, 92, 88};
        
        for (int i = 0; i < scores.length; i++) {
            System.out.println("scores[" + i + "] = " + scores[i]);
        }
    }
}

出力:

scores[0] = 85
scores[1] = 90
scores[2] = 78
scores[3] = 92
scores[4] = 88

拡張for文(for-each)

インデックスが不要なら、拡張for文が簡潔です。

for (型 変数名 : 配列) {
    // 変数に順番に各要素が入る
}
// Java 21
public class ArrayForEach {
    public static void main(String[] args) {
        String[] fruits = {"Apple", "Banana", "Cherry"};
        
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

出力:

Apple
Banana
Cherry
書き方用途
通常のfor (for (int i = 0; ...))インデックスが必要、要素を変更する
拡張for (for (型 変数 : 配列))全要素を順に参照するだけ

ポイント: 拡張for文は読み取り専用です。要素の値を変更したい場合は通常のfor文を使います。

配列操作の早見表

操作コード例備考
サイズ指定で作成int[] arr = new int[5];初期値は型のデフォルト値
初期値指定で作成int[] arr = {1, 2, 3};サイズは自動で決まる
要素を取得arr[0]インデックスは0始まり
要素を変更arr[0] = 10;
長さを取得arr.lengthメソッドではなくプロパティ
全要素を走査(通常for)for (int i = 0; i < arr.length; i++)インデックスが必要な場合
全要素を走査(拡張for)for (int x : arr)読み取り専用

二次元配列(触りだけ)

配列の配列を作ると二次元配列になります。

// Java 21
public class TwoDimensionalArray {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        
        System.out.println(matrix[0][0]);  // → 1
        System.out.println(matrix[1][2]);  // → 6
        System.out.println(matrix[2][1]);  // → 8
    }
}
記法意味
matrix[行][列]行と列で要素を指定
matrix.length行数
matrix[0].length0行目の列数

補足: 二次元配列の詳細は次回以降で扱います。ここでは「配列の中に配列を入れられる」ことだけ覚えてください。

実践例: 配列の合計と平均

// Java 21
public class ArraySum {
    public static void main(String[] args) {
        int[] scores = {85, 90, 78, 92, 88};
        int sum = 0;
        
        // 合計を計算
        for (int score : scores) {
            sum += score;
        }
        
        // 平均を計算
        double average = (double) sum / scores.length;
        
        System.out.println("合計: " + sum);          // → 433
        System.out.println("平均: " + average);      // → 86.6
    }
}

ポイント: (double) sum でキャストしないと整数割り算になり、小数点以下が切り捨てられます。

よくあるミス

1. 範囲外アクセス

int[] arr = {1, 2, 3};
System.out.println(arr[3]);  // エラー: インデックスは 0, 1, 2 のみ

2. length() と書いてしまう

int[] arr = {1, 2, 3};
System.out.println(arr.length());  // エラー: length はプロパティでメソッドではない

正しくは:

System.out.println(arr.length);  // カッコ不要

3. 拡張for文で要素を変更しようとする

int[] arr = {1, 2, 3};
for (int x : arr) {
    x = x * 2;  // 配列の中身は変わらない
}

正しくは:

for (int i = 0; i < arr.length; i++) {
    arr[i] = arr[i] * 2;
}

まとめ

項目内容
宣言int[] arr = new int[5]; または int[] arr = {1, 2, 3};
アクセスarr[0](0始まり)
長さarr.length(プロパティ)
走査通常for(変更可)、拡張for(読み取り専用)
  • 配列は固定長で、作成後にサイズ変更不可
  • インデックスは0から始まる
  • 範囲外アクセスは例外が発生
  • 二次元配列は int[][] で宣言

次のステップ

Java入門 #11 - メソッドの定義と呼び出し で処理をまとめるメソッドを学びます。

参考リソース

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

メールで無料相談する
← 一覧に戻る