トップ 言語 Java 演算子、実行フロー制御 Javaのfor文

Javaのfor文―通常の構文、拡張for文、break文、continue文など

通常のfor文の構文、拡張for文、break文、continue文など。Javaの拡張for文までマスターできるを目標に、Javaのfor文についてまとめています。

Javaの拡張for文までマスターする

for文を使ったループ処理は、ほかのループ構文よりも洗練された構文で機能が充実しています。

ここでは、for文とはからJavaのfor文について見ていき、拡張for文まで使えるようにしていきます。 break文やcontinue文などループ処理中の制御についても見ていきます。

for文とは

for文とは、プログラムで繰り返し処理を記述するコードの1つです。

Javaのfor文

Javaのfor文の構文は次の通りです。

for (<カウンタの初期化式>;<繰り返すかどうかの条件><カウンタなど変化のための式>)
    処理1;
    :
}

実際にプログラムを作成してみるとわかりやすいですが、先に拡張for文の説明を行います。

後でたくさんのサンプルを見て行きながら、 拡張for文を使った方がいい場合と通常のfor文を使った方がいい場合を説明していきます。 break文やcontinue文もその流れで説明していきます。

拡張for文

通常のfor文の場合、ループカウンタを記述しますが、 単純に配列などの値を先頭から順番に取りだしたりする場合、 拡張for文を使った方が簡単に記述できます。

拡張for文は次のように書きます。

for(<変数> : <コレクション>){
    要素の数だけ、このブロック内の文が実行される。
}

ループカウンタの値を特にforブロック内で使用しない場合は 拡張for文を使った方がシンプルになります。

逆にループカウンタの値をループ終了後の後の処理でも使いたい場合など ループカウンタをブロック内で使用する場合は通常のfor文を使う必要があります。

以下では、上述の説明では、初めての方の場合、for文?拡張for文?という感じになると思います。 ですので上述の説明の内容を繰り返し、サンプルプログラムを見ながら説明していきます。

ノーマルなfor文の例

int型の配列の中身を先頭から順に標準出力するコードを作成します。

for文のi++の++は、インクリメントといわれるもので、i = i + 1と同じようにiの値を1プラスするという演算を行います。 このサンプルコードでは、ループカウンタが1回のループで1増えるのを利用して、 配列の先頭から順に要素の値を標準出力しています。

サンプルコード

public class Sample {
    public static void main(String[] args){
        int[] myArray = new int[3];
        myArray[0] = 10;
        myArray[1] = 20;
        myArray[2] = 30;

        for (int i = 0; i < myArray.length; i++) {
            System.out.println(myArray[i]);
        }
    }
}

コンパイル

javac Sample.java

実行

java Sample
10
20
30

拡張for文の例

ノーマルなfor文の例の場合、配列の要素を先頭から1つ1つ走査していく定例的な処理ですが、 わざわざ初期化とか条件とか記述する必要がありました。

拡張for文を使うとそのような1つ1つインクリメントしていくような定例的な処理を自動化してくれます。 以下では、拡張for文の使用例を記述したサンプルプログラムを示しています。

for文の中にint n : myArrayと記述するだけで、先頭の要素から1回ループが回る度に次の要素の値を左側の変数nに値を設定してくれます。

public class Sample {
    public static void main(String[] args){
        int[] myArray = new int[3];
        myArray[0] = 10;
        myArray[1] = 20;
        myArray[2] = 30;

        for (int n : myArray) {
            System.out.println(n);
        }
    }
}

コンパイル

javac Sample.java

実行

java Sample
10
20
30

カウンタの値を使用したい場合は、拡張for文ではなく通常のfor文

拡張for文は便利ですが、for文のブロック内でカウンタの値を使用して判定したり、 値を保持したい場合に不向きです。無理やり使用する場合は、わざわざカウンタを追加しないといけなくなります。

そのような場合は、通常のfor文を使用します。

break文を使ってブロック内で条件を判定して途中でループを終了する

以下では、break文というループを途中で終わらせる文をつかって、カウンタの値を保存して途中で判定してループを終了する例を見ていきます。

配列の要素の値が20の要素番号を保存して、後で要素番号を標準出力する例を見ていきます。

public class Sample {
    public static void main(String[] args){
        int[] myArray = new int[3];
        myArray[0] = 10;
        myArray[1] = 20;
        myArray[2] = 30;
        int index = 0;

        for (int i = 0; i < myArray.length; i++) {
            if (myArray[i] == 20) {
                index = i;
                break;
            }
        }
        System.out.println(index);
    }
}

コンパイル

javac Sample.java

実行

java Sample
1

continue文を使って処理をスキップする

continue文という構文を使用するとループの処理をスキップすることができます。

以下では、continue文を使用して、配列の要素の値が1の場合、標準出力しないようにする例を見ていきます。

public class Sample {
    public static void main(String[] args){
        int[] myArray = new int[3];
        myArray[0] = 10;
        myArray[1] = 20;
        myArray[2] = 30;
        int index = 0;

        for (int i = 0; i < myArray.length; i++) {
            if (i == 1) {
                continue;
            }
            System.out.println(myArray[i]);
        }
    }
}

コンパイル

javac Sample.java

実行

java Sample
10
30

Javaのfor文、拡張for文のまとめ

繰り返し処理を行う構文の1つにfor文があります。 そして、Javaの場合、定例的な配列の要素を1つ1つ先頭から取り出すような処理を自動化した拡張for文が使えます。

また、for文のブロック内の処理では、途中でループを終了するbreak文、途中の処理をスキップするcontinue文が利用できます。

もっと知識を広げるための参考

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Bcc /Eclipse /gcc /gdb /g++ /JDK /JUnit /ZAP

技術・仕様
Ajax /CORBA /Java EE(旧称J2EE) /JNI

ライブラリ/Framework/CMS
jQuery /Lucene /MyBatis /RESTEasy /Spring /Struts /Seasar2 /WordPress

ITインフラ OSとミドルウェア
Linux /Windows /シェル
Apache/Tomcat /MySQL /Redis /Solr /vsftpd

ITインフラ PC 製品
ZOTAC

ITインフラ サーバー
Web公開サーバー構築

ITインフラ ネットワーク
プログラミング /機器 /構築

ITインフラ セキュリティ
公開サーバーのセキュリティ

SI
ホームページの作り方 /小さな会社のISMS

その他
IT用語 /ITスキル体系 /トレンド履歴 /翻訳英語の学習 /RSEUserGuide翻訳

スポンサーリンク