Javaのfor文とは?読み解き方と書き方を超絶わかりやすく解説!

  • 2020年9月3日
  • 2021年2月20日
  • Java

Javaを極める上で for 文のプログラムは絶対に欠かせません。

for 文とは簡潔に言うと、繰り返し処理を行うための構文です。

この for 文のプログラムを組み込めば、半永久的に処理を繰り返す無限ループや任意の回数だけ処理を行うことがサクッと実現できます。

人間は同じような単調作業をず〜っとさせられると飽きが来たり疲れたりで…… あまり好きな人はいませんよね?

その点、Javaは嫌な顔を一つせず黙々とやってくれるからめちゃくちゃ助かる!というわけなんです^^

このページでは、Javaのfor文を理解して、最終的にはあなた自身が書き方をマスターできるようにしていきましょう^^

for文の基本的な書き方

for文は以下のような構文で成り立っています。

for ( int i = 0 ; i <= 5 ; i++ ) {
// ここに繰り返したい処理を書く
}

 

※ 変数( iの部分 )や数字( 0や5の部分 )は任意なので、仕組みを理解できたら自由に変えられます。

さっそく冒頭に「for」と書かれていますが、英語の for には もともと「…まで」という意味があります。

なので、黒板のコード例でいきますと、for ( int i = 0 ; i <= 5 ; i++ )と書かれているので、このカッコ( )内の条件全てが当てはまるうちは、波かっこ{ }の中の処理を繰り返していきますよ〜と宣言しているわけです。

じゃあ、その肝心のカッコ内の情報 → ( int i = 0 ; i <= 5 ; i++ )、こちらの意味についてさっそく考えていきましょう^^

なんだか複雑に見えてしまう中身ですけど、実は3つに分解して考えるとだいぶスッキリします◎

  1. int i = 0 ;  ← 変数の宣言と初期値を決める
  2. i <= 5 ;      ← 繰り返す処理の回数条件を決める
  3. i++             ← 毎回の処理直後の変数増減を決める

このように役割を3段階に分けてまとめることができるんですね。

それでは一つ一つ解剖して見ていきましょう^^

変数宣言と初期値を設定する

変数の宣言と初期値を決める

for文をマスターしたいあなたであれば、すでに変数宣言については勉強してきているはずですよね^^

今回のコードでいきますと、int i = 0 ; ですから、まず整数を扱うint型を指定して、i という変数を宣言、そこに0(ゼロ)を代入しています。

つまり、i という変数に0(ゼロ)を入れた状態で初期値を決めているわけですね。

「 i は0(ゼロ)という値からスタートしますよ〜!」と、コンピューターに宣言しているのが 1 番目の役割となります。

繰り返す処理回数の条件を設定する

繰り返す処理の条件を決める

次は 2番目の i <= 5 ; の部分です。

真ん中に位置するこの箇所は、「1番目で定義した変数が〇〇までは繰り返し処理を行いますよ〜」という 〇〇までの条件を決定しています。

つまり、今回の i <= 5 ; でしたら、「 i が 5 以内まではずっと繰り返し処理をおこない続けますよ〜!」と決めているんです。

この当該コードの中には、小学校 2 年生で習ってきたはずの記号が含まれていますが、念のため、一緒に復習しながら改めて読み方を確認しておきましょう。

  • > ← 大なり(左辺が右辺よりも大きい)
  • < ← 小なり(左辺が右辺よりも小さい)
  • = ← イコール(左辺と右辺が等しい)

こういう意味で理解できていればOKです◎

そうすると、今回のコードは、i <= 5 ; ですので、左辺にある i の変数と右辺にある 5 の間には「< (小なり)」と「= (イコール)」の関係が成り立っていることが見て取れますね。

これは「 i の変数が <= 5 までの条件。つまり i の数字が 5 より小さいか、イコールの条件まではずっと繰り返し処理を行いますよ〜」という意味になります。

理解の早い人だと、i の初期値が0(ゼロ)であったことと結びつけて「 i が 0 〜 5の値を持っている間は処理を繰り返すんだなっ^^」と、瞬時に予想できたはずです。

では、この i の値はどのように変化していき、最終的に決めた条件から外れてプログラムが終了することになるんでしょうか?

実は、そのカギを握るのが3番目の部分になります。

毎回の処理直後の変数の増減を設定する

毎回の処理直後の変数の増減を決める

for文の一番右端にあたる箇所は、毎回の処理が終わった直後の変数の増減を決定します。

例えば、今回の例では i++ となっていますね。

この ++ はインクリメントと言って「 1 (イチ)プラスする」という意味があります。

つまり、「処理が毎回終わるたびに i に入っている数字を 1 ずつ増やしていきますよ〜!」と決めているわけです。

ちなみに、++ 以外にも、マイナスを 2 回書いて −− とすることもでき、これはデクリメントと言って、処理が毎回終わるたびに 1 ずつ数字を減らしていくという意味になります。

  • インクリメント:++( 1 プラスする)
  • デクリメント:−− ( 1 マイナスする) 

基本的にはこの2つをおさえておけば困りません^^

for文の基本的な書き方まとめ

ここまでで、for文のカッコ()内にあるコードを3つに分けて、それぞれの役割を理解してきましたね。

それでは、これらがまとまってどのようにプログラムを動かしていくのか、改めて読み解いていきましょう。

この処理を一通り理解できた暁には、あなた自身が for 文を思い通りに書けるはずですよ^^

for ( int i = 0 ; i <= 5 ; i++ ) {

        System.out.println(“Java大好き!”);

}

はい^^わかりやすいように、ここからはメイン処理として波かっこ { } の中にも実行する内容を加えてみました。

「Java大好き!」という文をその都度 改行を入れながら表示していく命令文になります。

for 文の構成として、この処理が何回繰り返されて終了するのかを考えていきましょう^^

まず、1番目に注目すると、 i = 0 ; と初期値が宣言されていますので、現時点で i の中には 0 の数字が入っている状態です。

変数の宣言と初期値を決める

そして 2番目の真ん中に移ると、i <= 5 ; とありますので、現状では 処理が動く条件内であることがわかりますね。

万が一、忘れてしまった人のためにもう一度お伝えしますが、真ん中にある式は「処理を繰り返す条件」を定めている所です。

繰り返す処理の条件を決める

つまり、i <= 5 ; というのは、「 i が 5 よりも小さいかイコールまで」は処理を行い続けるという条件文になっています。

その結果、波かっこ { } の部分に書かれている処理が実行されて、1つ目の「Java大好き!」が出力表示されます。

では次にどうなるかと言うと、for文の3番目で注目した部分が反応します。

毎回の処理直後の変数の増減を決める

なぜなら、すでに見てきたように、for文の右端にある箇所は「毎回の処理が終わった直後に変数の増減を決める」役割を担っているからですね。(※ 忘れてしまった人は復習しましょう^^)

そこには i ++ と書かれていますので、この時点で i の変数が 0(ゼロ)から 1(イチ)へと増加します。

そして再び 真ん中の条件文に注目すると、i <= 5 ; とありますので、現時点で i = 1 ; の状態ですから、この条件にまだ当てはまっていることがわかりますね。

結果、再び { } の部分に書かれている処理が実行されて2回目の「Java大好き!」という文が出力されます。

処理された直後に、また i++ が動きますから、インクリメントされて i の値が今度は 1 から 2 に増加します。

i = 2 ; の状態ですから、真ん中にある i <= 5 ; の条件式に依然として当てはまるため、更に処理が続いていき、3回目の 「Java大好き!」が表示されます。

もうお分かりかと思いますが、このような流れを繰り返しつつ、最終的には i の変数が 5 の段階になるまでずっと同じ処理を実行していくことになります。

なので、改めて簡潔にまとめると、今回のfor文は以下のように動いていくと読み解けるでしょう。

 

for ( int i = 0 ; i <= 5 ; i++ )   {

        System.out.println(“Java大好き!”);

}   //↓当該 for文の読み解き方↓


i 変数に0がセットされている。

i の変数が 5 以下かどうか判定して、当てはまるので処理内容が実行される。

Println文が実行されて1回目の「Java大好き!」を表示する。

i 変数に1が増やされ、0 → 1 となる。

i の変数が 5 以下かどうか判定して、当てはまるので処理内容が実行される。

Println文が実行されて2回目の「Java大好き!」を表示する。

i 変数に1が増やされ、1 → 2 となる。

i の変数が 5 以下かどうか判定して、当てはまるので処理内容が実行される。

Println文が実行されて3回目の「Java大好き!」を表示する。

i 変数に1が増やされ、2 → 3 となる。

i の変数が 5 以下かどうか判定して、当てはまるので処理内容が実行される。

Println文が実行されて4回目の「Java大好き!」を表示する。

i 変数に1が増やされ、3 → 4 となる。

i の変数が 5 以下かどうか判定して、当てはまるので処理内容が実行される。

Println文が実行されて5回目の「Java大好き!」を表示する。

i 変数に1が増やされ、4 → 5 となる。

i の変数が 5 以下かどうか判定して、当てはまるので処理内容が実行される。

Println文が実行されて6回目の「Java大好き!」を表示する。

i 変数に1が増やされ、5 → 6 となる。

i の変数が5以下かどうか判定した結果、条件に当てはまらいため処理内容が実行されず、ここでfor文のループを抜けて終了となる。

いかがでしょうか?

ここまでしっかり動きを確認してこれたら、基本的な for 文の読み方はマスターできたんじゃないでしょうか^^

結果、以下のような実行結果になることがちゃんとイメージできましたよね^^

for文の実行結果

ザックリまとめると、i が 0 のときから 5 まで繰り返し処理が行われるので、合計で6 回分の「Java大好き!」が表示される、ということになりますね。(※ i は 1 ではなく、 0 からスタートしているので全部で 6回 になるわけですね。)

ここまではよろしいでしょうか?

振り返ってみると、けっこう簡単な仕組みであることがわかったと思います^^

初学者が誤解するかもしれないポイント

for 文の基本的な書き方を理解しても、情報量の少なさや認識のすれ違いが原因で思い違いが起きることもあります。

そうしたことを少しでも回避して for文をマスターするために、 5 つの注意点をお伝えしておきますね^^

変数名は i でなくても構わないが i がオススメ

Javaの世界では、for文の ( ) 内にある変数は大抵の場合、i や j などの類が使用されます。

でもこれは特に i とか j じゃないといけないわけじゃありません。

例えば コード量が多くて i という文字がいろんなところに出てきてややこしいなぁと感じられるなら、変数名を counter (カウンター)と書いて自分なりにわかりやすく宣言しても一向に構わないんですね。

for ( int counter = 0 ; counter <= 5 ; counter++) { 処理の中身};

このように、いかにもカウントの役割を持っている変数として宣言したほうがスッキリするのでしたら、これでも全然OKなんです◎

ただ、現場の世界ですと、ぶっちぎりで i と j が使われるため、とりとめて特別な理由がないかぎりは i や j を使用していくことをオススメします^^

変数の初期値は 1 ではなく0が基本

もしかしたら、for文の初期値を宣言する int i = 0 ; この箇所について少し違和感を感じた人も多いんじゃないでしょうか?

なんで わざわざ i に 0 を持たせて、0 回目からスタートさせるんだろう? と…

人間の場合ですと、1回目、2回目、3回目と数えるのに慣れてしまっているから、今回のように 0回目、1回目、2回目、3回目とカウントしていくことにズレを感じるわけですよね。

結論から言いますと、これはコンピューターの特性上、非常に都合が良いので、こういう書き方がベースになっています。

例えば、Javaには「配列」という機能もあるんですが、この配列を for 文と一緒に使って制御する場合に0(ゼロ)を起点にすることが好都合だったりします。

なので、初めの頃は for文 で初期値を 0 とセットすることにモヤモヤが残ってしまうかもしれませんが、とりあえず「こういうものなんだ^^」と割り切って考えておくと、余計な事に振り回されずスマートかと思います。

ただ、どうしても気持ちが悪い場合には、変数の初期値を 1 にしても今回でしたら特に問題ありません。

以下の 2 つの for 文を見比べてみていただけますか?

  • for ( int i = 1 ; i <= 6 ; i++) {処理の中身 };
  • for ( int i = 0 ; i <= 5 ; i++) { 処理の中身};

結局のところ、この 2 つの繰り返し処理の回数は全く同じで 6 回ずつ動くわけですよね?(※ i の動きを読み解いてみてくださいね。)

スタートする初期値が違くても、真ん中の条件を調整してあげれば同じになっちゃうわけです^^

セミコロンは必須だから忘れちゃだめ!

for ( int i = 0 ; i <= 5 ; i++) {処理の中身 };

改めて見ると、今回の for 文には全部で 3 つのセミコロンがありますね。

初学者はこの部分をうっかり書き忘れたり、セミコロン( ; )ではなくてコロン( : )を書いてエラーを出すことが多いです。

でもセミコロンが 1 つでも欠けるとプログラムは正常に動きませんので、しっかりとセミコロンの書き方もマスターするようにしましょう。

すでにご存知かもしれませんが、セミコロンには文章でいうところの最後に書く 。(まる)のような役割があります。

文章を書く時は必ず 。← この(まる)を書いて文の終わりを暗に示しますね。

Javaもこれと同じで毎回、宣言文や命令文を書いた後には ; ← このセミコロンを付けるというお作法が存在しているわけです。

最初の頃はいつセミコロンを付けるんだっけ? といちいち迷いがちになりやすいですがw、アウトプットを続けれていけばそのうち慣れますので、頑張って継続していくようにしましょう^^

スペースはなくても動くがあったほうが良い

  • for (int i=0; i<=5; i++)
  • for ( int i = 0 ; i <= 5 ; i++)

上の2つの for文 の違いは何かわかりますか?

そう、内容は同じなんですが、スペースありとスペースなしの違いが見てとれますね。

実は、スペースなしのコードでも普通にプログラムは動きますので、全く問題ありません。

でも、明らかにスペースがあったほうが見やすいと思いませんか?

メールでも文章でもそうですが、伝える内容は同じだとしても、字や体裁が醜い人よりも綺麗に整えて書いてくれた人のほうが、周りからも好感をもたれるものです。

Javaのコードも同じで、チームでお互いに読み解いたり修正する場合には、綺麗でわかりやすいようにまとめてあげたほうが喜ばれますし仕事の効率も上がります◎

なので、あなたも for 文を書くときはちゃんと見やすいように適宜スペースを開けて書くようにしていきましょうね^^

Javaのfor文まとめ

いかがだったでしょうか?

このコンテンツを通してJavaのfor文の書き方をマスターできたのであれば幸いです。

最後の集大成として、以下の課題に取り組んでアウトプットしてみていただけますか?

【今日の課題】

 

  • Javaのクラス「For_Practice」を作成してください。
  • for文を使い「Javaをマスターするぞ!」という文言を3回表示するプログラムを完成させてください。
  • for文内にはインクリメントではなく、デクリメントを使用し、=(イコール)の記号は使わずに作成してください。
  • 最後にコンソールで実行結果を確認してみましょう。
答えはこちらで確認できます。
for文課題の回答例

for 文にはいろんな適用がありますので、この他にもネストを入れた 2 重ループを作れたり、拡張 for 文と言われる仕組みがあったりします。

そちらについては、また別の機会に改めてマスターしていきましょう^^

 

プログラミングをマスターする
最速ステップ

プログラミングをマスターしたい!という大切な夢を最速で達成しませんか?今すぐ下のボタンをクリックして理想の環境を手に入れてください◎

team
javaのfor文例
最新情報をチェックしよう!
>プログラミングをマスターする最速ステップ

プログラミングをマスターする最速ステップ

プログラミングをマスターしたい!という大切な夢を最速で達成しませんか?今すぐ下のボタンをクリックして理想の環境を手に入れてください◎

CTR IMG