はじめに
Javaで配列の全要素を処理する際、多くの場合はfor
文を使います。
for (int i = 0; i < array.length; i++)
という書き方は、配列操作の基本であり非常に強力です。
しかし、「ただ配列の全要素を順番に読み取りたいだけ」という場面では、インデックス変数 i
の管理が少し冗長に感じられることもあります。
そんな時に絶大な効果を発揮するのが**「拡張for文(Enhanced for statement)」**です。この記事では、そのシンプルで強力な使い方を解説します。
拡張for文の基本構文
拡張for文は、別名「for-eachループ」とも呼ばれ、配列やコレクションの要素を1つずつ取り出して処理することに特化しています。
基本的な構文は以下の通りです。
for (要素の型 変数名 : 配列やコレクション名) {
// 取り出された要素(変数名)を使った処理
}
この構文は、日本語にすると「配列(コレクション)から、要素を1つずつ取り出して、この変数に入れてループしてね」という意味になります。
インデックスの初期化や条件式、インクリメントを自分で書く必要がないため、コードが非常にスッキリします。
実践コードと実行結果
それでは、実際に文字列の配列に対して拡張for文を使ってみましょう。
今回は、往年の強打者が集う、夢のような配列を用意しました。
このコードが何をしているかを見ていきましょう。
-
String[] hifumi = { "カブレラ", "ウッズ", "李承燁" };
3人の強打者の名前が入った、String
型の配列を作成しています。 -
for (String value : hifumi) { ... }
ここが拡張for文の心臓部です。-
hifumi
配列から、要素が1つずつ順番に取り出されます。 - 取り出された要素(文字列)は、
String
型のvalue
という変数に自動的に代入されます。- 1周目:
value
には"カブレラ"
が入る - 2周目:
value
には"ウッズ"
が入る - 3周目:
value
には"李承燁"
が入る
- 1周目:
- ループは、
hifumi
配列の全要素を取り出し終えるまで続きます。
-
-
System.out.println(value);
ループの各回で、value
変数に代入された値をそのまま画面に出力しています。インデックス[i]
を使う必要は全くありません。
そして、このコードを実行した結果がこちらです。
期待通り、配列の要素が順番に、そして綺麗に出力されました。
通常のfor文との使い分け
拡張for文は非常に便利ですが、万能ではありません。通常のfor
文とどう使い分けるべきでしょうか。
-
拡張for文が最適な場面
- 配列の全要素を、順番に読み取りたいだけの場合。
- 処理にインデックス番号が不要な場合。
- コードの可読性を高め、シンプルに保ちたい場合。
-
通常のfor文が必要な場面
- 処理の中でインデックス番号そのものを使いたい場合。(例:「〇番目の要素は…」と表示したい)
- 配列の要素を逆順で処理したい場合。
- 複数の配列を同時に処理したい場合。
基本的には、「読み取るだけなら拡張for文、インデックスが必要なら通常のfor文」と覚えておくと良いでしょう。
まとめ
拡張for文は、Javaのコードをよりシンプルで、より安全(インデックス間違いによるエラーが起きない)にするための強力なツールです。
-
for (型 変数名 : 配列名)
の構文をマスターしよう。 - インデックスが不要な読み取り処理では、積極的に活用しよう。
日々のコーディングに拡張for文を取り入れて、より可読性の高いコードを目指しましょう。