カテゴリ: Javaの制御構造 更新日: 2025/04/05

Java の拡張 for 文とは?使い方をマスターしよう

078
Java の拡張 for 文とは?使い方をマスターしよう

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

新人

「Java で配列やリストの要素を簡単に取り出す方法はありますか?」

先輩

「あるよ!Java には 拡張 for 文 という便利な構文があるんだ。」

新人

「普通の for 文と何が違うんですか?」

先輩

「拡張 for 文を使うと、配列やリストの要素を簡単にループ処理できるんだよ。詳しく説明していくね!」

1. 拡張 for 文とは?(基本的な説明)

1. 拡張 for 文とは?(基本的な説明)
1. 拡張 for 文とは?(基本的な説明)

Java の 拡張 for 文(別名 for-each 文)は、配列やリストの全ての要素を順番に処理するための簡潔な書き方を提供します。

拡張 for 文の特徴

  • 配列やリストの全要素を簡単にループ処理できる
  • 通常の for 文よりもコードが短く、見やすい
  • インデックス管理が不要で、要素の取得ミスを減らせる

例えば、「5 人の名前を順番に表示する」といった処理を通常の for 文と拡張 for 文で比較すると、拡張 for 文の方がシンプルに書けます。

2. 拡張 for 文の基本的な書き方

2. 拡張 for 文の基本的な書き方
2. 拡張 for 文の基本的な書き方

拡張 for 文を使って、配列の要素を順番に処理する基本的な書き方を見てみましょう。

拡張 for 文の基本構文


public class EnhancedForExample {
    public static void main(String[] args) {
        String[] names = {"太郎", "花子", "次郎", "三郎"};

        for (String name : names) { // 配列の要素を順番に取得
            System.out.println("名前: " + name);
        }
    }
}

名前: 太郎
名前: 花子
名前: 次郎
名前: 三郎

拡張 for 文の構造

  • データ型 変数名 : 配列(またはリスト) の形式で記述する
  • 変数名 には配列やリストの各要素が順番に代入される
  • 通常の for 文のようにインデックス(i など)を管理する必要がない

例えば、String name : names の部分では、names 配列の各要素が name に順番に代入されます。

拡張 for 文のメリット

  • コードがシンプルで可読性が向上
  • 配列の範囲外アクセスの心配がない
  • インデックス操作をしないため、処理ミスが減る

通常の for 文と比較すると、拡張 for 文を使うことでコードの記述量が減り、わかりやすくなります。

3. 拡張 for 文を使って配列を処理する方法

3. 拡張 for 文を使って配列を処理する方法
3. 拡張 for 文を使って配列を処理する方法

拡張 for 文を使うことで、配列のすべての要素を順番に取り出して処理することができます。通常の for 文と比べてコードが短くなり、わかりやすくなります。

配列を処理する拡張 for 文の例


public class ArrayExample {
    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 文を使うメリット

  • すべての要素を簡単に取得できる
  • インデックス(i)を使わないのでコードがシンプル
  • 配列の範囲外を参照するミスを防げる

このように、拡張 for 文を使うことで、配列の要素を簡単に処理することができます。

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

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

※ Amazon広告リンク

4. 拡張 for 文で文字列の配列を処理する

4. 拡張 for 文で文字列の配列を処理する
4. 拡張 for 文で文字列の配列を処理する

拡張 for 文は、数値の配列だけでなく、文字列の配列にも使えます。例えば、複数の名前を順番に表示することができます。

文字列の配列を処理する拡張 for 文の例


public class StringArrayExample {
    public static void main(String[] args) {
        String[] names = {"田中", "佐藤", "鈴木", "高橋"};

        for (String name : names) { // 配列の要素を順番に取得
            System.out.println("名前: " + name);
        }
    }
}

名前: 田中
名前: 佐藤
名前: 鈴木
名前: 高橋

ポイント

  • 配列のすべての要素を簡単に取得できる
  • 文字列の配列にも対応している
  • インデックスを使わずに処理できるのでシンプル

この方法を使うと、文字列のリストを簡単に表示することができます。

5. 拡張 for 文と通常の for 文の違い

5. 拡張 for 文と通常の for 文の違い
5. 拡張 for 文と通常の for 文の違い

拡張 for 文と通常の for 文には、それぞれメリットとデメリットがあります。どちらを使うべきかを理解するために、比較してみましょう。

拡張 for 文と通常の for 文の比較

比較項目 拡張 for 文 通常の for 文
コードの長さ 短く、シンプル 条件やインデックス管理が必要
配列の要素アクセス 直接要素を取得 インデックスを使って要素を取得
要素の変更 要素を変更できない(参照のみ) インデックスを使って変更可能
処理の柔軟性 すべての要素を処理するのに適している 一部の要素のみ処理する場合にも使える

通常の for 文との書き方の違い

以下の例を見て、拡張 for 文と通常の for 文の違いを確認してみましょう。

通常の for 文


public class NormalForLoop {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

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

値: 1
値: 2
値: 3
値: 4
値: 5

拡張 for 文


public class EnhancedForLoop {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

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

値: 1
値: 2
値: 3
値: 4
値: 5

どちらを使うべきか?

  • 配列の全要素を処理する場合 … 拡張 for 文が簡単で便利
  • 一部の要素のみ処理する場合 … 通常の for 文が適している
  • インデックスを使って要素を変更する場合 … 通常の for 文を使う

拡張 for 文は簡単に配列を処理できる便利な構文ですが、インデックスを使って特定の要素を変更したい場合には通常の for 文を使うのが良いでしょう。

6. 拡張 for 文を使った応用例(合計を求める)

6. 拡張 for 文を使った応用例(合計を求める)
6. 拡張 for 文を使った応用例(合計を求める)

拡張 for 文を使うと、配列のすべての要素を簡単に取得できるため、合計を求める処理がスムーズに行えます。

拡張 for 文で配列の合計を計算する例


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

        for (int num : numbers) { // 配列のすべての要素を取得して合計
            sum += num;
        }

        System.out.println("合計: " + sum);
    }
}

合計: 150

ポイント

  • 変数 sum を用意し、各要素の値を足していく
  • 通常の for 文のようにインデックスを使わないので、コードが簡潔になる
  • 配列のすべての要素を処理する場合に便利

この方法を使えば、数値のリストから簡単に合計を求めることができます。

7. 拡張 for 文を使った応用例(最大値・最小値を求める)

7. 拡張 for 文を使った応用例(最大値・最小値を求める)
7. 拡張 for 文を使った応用例(最大値・最小値を求める)

拡張 for 文を使って、配列の中の最大値と最小値を求めることもできます。

拡張 for 文で最大値・最小値を求める例


public class MinMaxExample {
    public static void main(String[] args) {
        int[] numbers = {15, 42, 8, 30, 56, 3, 90};

        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);
    }
}

最大値: 90
最小値: 3

ポイント

  • 最初の要素を基準として maxmin を設定する
  • 拡張 for 文を使って配列のすべての要素をチェックする
  • 各要素が現在の maxmin より大きいか小さいかを比較する

この方法を使えば、配列の中から最も大きい値と最も小さい値を簡単に見つけることができます。

8. 練習問題:拡張 for 文を使ったプログラムを作ろう

8. 練習問題:拡張 for 文を使ったプログラムを作ろう
8. 練習問題:拡張 for 文を使ったプログラムを作ろう

最後に、拡張 for 文を使ってプログラムを作る練習をしましょう。

問題1: 数の合計を求める

以下の配列に入っている数値の合計を求めるプログラムを作成してください。


int[] numbers = {12, 25, 37, 49, 58};

問題2: 最大値と最小値を求める

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


int[] numbers = {22, 5, 78, 34, 89, 13};

ヒント

  • 拡張 for 文を使って配列のすべての要素を順番に処理する
  • 合計を求めるときは変数 sum を用意して加算する
  • 最大値・最小値を求めるときは変数 maxmin を用意し、比較しながら更新する

プログラムを作成したら、実行して正しい結果が得られるか確認してみましょう。

Javaの制御構造の一覧へ
新着記事
Flutterアプリの署名設定(Android・iOSのポイント)
Flutterアプリの署名設定を完全解説!Android・iOSのビルドとデプロイ初心者ガイド
Java のインターフェースとは?普通のクラスとの違いを学ぼう
Javaのインターフェースとは?普通のクラスとの違いを学ぼう【初心者向け解説】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
EC2の料金体系を完全解説!オンデマンド・リザーブド・無料枠の違いとは?
EC2の料金体系を完全解説!オンデマンド・リザーブド・無料枠の違いとは?
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク