Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Java】拡張for文の書き方と使い方の基本

Javaの拡張for文(for-each文)は、配列やリストなどのデータ群の要素を一つずつ効率的に処理する構文です。この記事では、その基本的な書き方と使い方を、サンプルコードを交えて解説します。インデックスを使わずにシンプルに繰り返し処理を記述する方法を学び、Javaプログラミングの理解を深めましょう。

作成日: 更新日:

開発環境

  • OS: Windows10
  • Editor: Visual Studio Code
  • Java: 22.0.2

Javaの拡張for文とは

Javaの拡張for文は、配列やCollectionに格納されている複数の要素を順番に処理するための構文です。

これは、配列やCollection(例: List や Set)といったデータをまとめた構造の中から、一つ一つの要素を取り出して何らかの処理を繰り返し実行したいときに利用されます。従来のfor文と比べて、記述が非常にシンプルになるため、「簡単にループ処理を行う」ことができるのが特徴です。

具体的には、要素の順番を管理するためのインデックス(添字)や、ループの回数を自分で数える必要がありません。配列やCollectionに格納されているすべての要素に対して、自動的に処理を適用できるため、コードをより読みやすく、間違いを少なくすることができます。

基本構文

このfor文は、「拡張for文」や「for-each文」とも呼ばれ、配列やコレクションに格納されている要素を、一つずつ順番に取り出して処理したいときに使用する構文です。従来のfor文のようにインデックス(要素の番号)を使うことなく、直接要素の値を取り出すことができるため、コードをよりシンプルに、かつ安全に記述できます。

この構文の各部分について説明します。

  • 型: コレクションや配列から取り出す要素のデータ型を指定します。例えば、整数の配列から取り出す場合は int、文字列のリストから取り出す場合は String などと記述します。
  • 変数: コレクションや配列から一つずつ取り出された要素が一時的に格納される変数名です。この変数を使って、現在処理している要素の値にアクセスします。
  • コレクションまたは配列: 処理の対象となる、複数のデータが格納されている配列(例: int[] numbers)や、コレクション(例: List<String> names)を指定します。

このfor文は、指定された「コレクションまたは配列」のすべての要素に対して、最初から最後まで順番に処理を繰り返します。ループが1回実行されるごとに、次の要素が「変数」に格納され、波括弧 {} の中にある「各要素に対して実行される処理」が実行されます。すべての要素の処理が終わると、for文の実行は終了します。

1for (型 変数 : コレクションまたは配列) {
2各要素に対して実行される処理
3}

サンプルコード

java/chapter11/ForeachExample.java

上記のコードは、Javaプログラミングにおけるfor-eachループという機能を使って、リストの中の要素を一つずつ取り出し、特定の処理を行う方法を示しています。

まず、List<String> words = List.of("apple", "banana", "cherry"); の行では、List(リスト)というデータ構造を作成しています。Listは、複数のデータを順番に並べて格納できるものです。この場合、String型のデータ(文字の集まり)である"apple"、"banana"、"cherry"という3つの文字列をリストに格納しています。List.of()は、複数の要素を持つリストを簡単に作成するための便利な記述方法です。

次に、for (String word : words) の部分がfor-eachループと呼ばれる構文です。このループは、wordsというリストの中にあるすべての要素を、最初から最後まで順番に処理したいときに使います。

  • String word は、リストから取り出された個々の文字列を一時的に保存するための変数です。ループが1回実行されるたびに、wordsリストの次の要素がこのword変数に代入されます。
  • : は、「~の中から」という意味を持ち、wordsリストの中からwordという名前で要素を取り出す、という処理を示しています。

ループの中のSystem.out.println(word.toUpperCase()); では、取り出したword変数に格納されている文字列に対して処理を行っています。

  • word.toUpperCase() は、wordに格納されている文字列のすべての文字を大文字に変換するメソッド(命令)です。例えば、「apple」という文字列は「APPLE」に変換されます。
  • System.out.println() は、変換された文字列をコンピュータの画面(コンソール)に表示するための命令です。

したがって、このコードを実行すると、リストに入っている「apple」、「banana」、「cherry」という文字列がfor-eachループによって一つずつ取り出され、それぞれ大文字に変換された「APPLE」、「BANANA」、「CHERRY」が順番に画面に表示されることになります。このfor-eachループは、リストや配列といった複数のデータを扱う際に非常に役立つ便利な構文です。

ForeachExample.java
1import java.util.HashMap;
2import java.util.List;
3import java.util.Map;
4
5public class ForeachExample {
6    public static void main(String[] args) {
7        // 配列に含まれる文字列をすべて大文字に変換して表示する練習問題
8        List<String> words = List.of("apple", "banana", "cherry");
9        for (String word : words) {
10            System.out.println(word.toUpperCase());
11        }
12    }
13}
14

おわりに

本記事では、Javaの拡張for文の基本的な使い方と書き方について解説しました。 拡張for文は、配列やコレクションの要素をインデックスを使わずに一つずつ効率的に処理できる点が特徴です。 for (型 変数 : コレクションまたは配列)というシンプルで読みやすい構文で繰り返し処理を記述できます。 サンプルコードを通して、リストの各要素に処理を適用する具体的な流れを理解していただけたかと思います。 この拡張for文を使いこなすことで、Javaプログラミングにおけるデータ処理がより簡単で強力になります。

関連コンテンツ