システムエンジニアについてまじめに考えるブログシステムエンジニアについてまじめに考えるブログ30半ばの中堅SEがITの話題や日々思うことなどエンジニアとして成長するために役立つ情報を自由気ままに綴っているブログです。同じ処理を繰り返し実行させたいということはコンピュータの世界ではよくあることです。入力したファイルやデータベースから取得した行ごとだったり、配列の要素数分だったり、その利用シーンは様々であり、プログラミングをしていく上でif文同様、よく使っていくことになるでしょう。Javaで繰り返し処理を行う際に利用する方法のひとつがfor文です。今回の記事では、そのfor文について解説していきます。for文の使い方for文は指定した条件式が真(true)となる間、処理を繰り返します。決まった回数繰り返したいといった場合、条件式で繰り返し回数を指定することになります。for文の構文は以下のとおりです。具体的には実際のサンプルを交えて解説します。}}i=0i=1i=2i=3i=4サンプルでは、変数iの値を1加算しながら、その値を画面に出力しています。どのように動いているのか、for文を分解しながら考えていきましょう。0;」の部分が初期化式になります。初期化式は、for文が実行されると最初の1回だけ実行されます。条件式で使用する変数の初期化に使われるのが一般的です。このサンプルでは、int型変数「i」を「0」で初期化しています。5;」が条件式になります。この条件式を満たす(trueとなる)場合は、forループを繰り返します。このサンプルでは、変数「i」の値が「5より小さい間、繰り返す」と指定しています。最後の「i++」が変化式になります。}で囲われた範囲)内の処理が終わり、次の繰り返し処理に入る前の後処理を定義します。このサンプルでは、変数「i」の値を1加算しています。(このように繰り返す回数を格納する変数のことを「カウンタ変数」と言います。)変数のスコープについてfor文の中で使用した変数のスコープについて意識する必要があります。変数のスコープとは、変数がアクセスできる範囲(有効範囲)のことです。変数宣言をどこで行ったかによって、スコープが変わってきます。次のサンプルコードを見てください。}}このサンプルコードをコンパイルしてもエラーとなってしまいます。Sample12_02エラー1個これはfor文の外で変数「i」を参照しようとしているためです。for文の初期化式で変数「i」を宣言しています。この場合、変数「i」のスコープはforブロックの中のみとなります。}の間)がその変数を扱える範囲となり、その範囲外で使おうとすると、コンパイルエラーとなります。forブロックの中で扱った変数をforブロックの外でも扱いたい場合は、以下サンプルのように変数宣言をforブロックの外で行う必要があります。}}i=0i=1i=2i=3i=4i=5最後の「i=5」の出力がforブロックの外で実行しているSystem.out.printlnの出力結果となります。複数の初期化式と変化式を指定するfor文で指定する初期化式と変化式は、ひとつだけでなく複数の式を記述することもできます。複数の式を指定したい場合は、式と式の間をカンマ(,)で区切ります。繰り返しの中で実行される処理...}このようにカンマで区切ることで初期化式と変化式を複数指定することができます。条件式についてはカンマ区切りでの複数指定はできない点に注意してください。条件式は、ANDやORなどの論理演算子を使って複雑な式を作成することになります。初期化式と変化式を複数指定したfor文のサンプルコードを示します。j=0初期化式にて、int型変数「i」と「j」を宣言し、初期値の代入も併せて行っています。変化式では、変数「i」をインクリメント、「j」をデクリメントさせています。あとは、forブロックの中で、それぞれの変数の値を出力させています。ここで、初期化式についてもう一度着目してください。j–)このfor文を、もしかしたら以下のように記述してしまう方もいらっしゃるのではないでしょうか。j–)変数「i」と「j」、それぞれに型を指定するというため、上記のように記述してしまいがちですが、この記述は誤りであり、コンパイルエラーとなります。変数「j」の型は何になるのか、ということですが、正解はint型になります。4;」の意味は、int型の変数「i」と「j」の2つを宣言しているという意味になります。異なる型の変数を指定したい場合はどうすれば良いのでしょうか。その回答ですが、初期化式では異なるデータ型の複数の変数を指定することはできません。以下のような記述はできないということです。j–)上記の記述ではコンパイルエラーとなります。複数の型の変数を初期化式で指定したい場合は、for文の前で変数の宣言を行います。省略することもできます。いうことかの説明の前に以下のサンプルコードを見てください。すべて省略しており、それらを区切るセミコロン(;)のみしか記述していません。条件式がなければ、いつまでもforブロックの中の処理を繰り返してしまいますが、その代わりにif文で繰り返し条件の判定を行っています。その判定で条件を満たせば、break文によってforブロックを抜けて、次の処理に移るという動きとなります。forブロックの中でbreak文を実行することで、現在の繰り返し処理を強制的に終了し、forブロックを抜けます。このように、for文の条件式以外でも繰り返し条件の判定をすることができます。省略しているので、for文に入る前に変数初期化を行い、forブロックの中で変化式に相当する処理(上記サンプルでは「i–;」)を必ず記述する必要があります。その記述を忘れると、いつまでも繰り返し処理が終わらない「無限ループ」となってしまいます。まとめfor文は条件式の他に、forブロック内で使用する変数の初期化や変化式を記述することができます。その便利さから、よく使用する構文となりますので、特徴をしっかり押さえておきましょう。繰り返しこの記事を書いている人ツナマヨシステムエンジニアとして働きだしてから約15年。30代半ばの中年現役エンジニア。必須サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントツナマヨシステムエンジニアとして働きだしてから約15年。30代半ばの中年現役エンジニア。出版しましたエンジニアはどんな仕事?プログラミングの勉強方法は?図解、対話を用いて解説!こちらも併せてご確認ください。システムエンジニアについてまじめに考えるブログシェアTOPへ。