1-4-1:while と forの比較


・ Javaにはループのパターンとして、 while文によるループの記述、for文によるループの記述、do-while文に よるループの記述が用意されています。 ここでは、最も基本的な while と forのループの記述について解説します。
whileの場合には、whileのすぐ後の( ) 内に、繰り返しを続行するかどうか の条件判定式が記述されます。この判定式は boolean型の値を取り、 trueならば繰り返しの処理を繰り返し、 falseならば繰り返しの処理を行わずに、ループの次ぎに記述された 処理に移ります。
形式だけ見ると、条件分岐の ifの場合と全く同じ記述方法です。 ただし、意味は全く異なります。 ifの後に来るブロックの処理の内容は、実行されないか、もしくは実行されても1回 だけです。 それに対して whileの後に来るブロックの処理は何回でも繰り返される可能性があります。 (繰り返しの回数が0回、あるいは1回ということもあり得ます。)


while( 条件判定 ) {

    繰り返し処理の内容

}

forの後の( )の内部は、少し複雑です。 ここには3個の式が ;(セミコロン) で区切られて記述されます。
真中の2番目の式が、whileの条件判定式と同じ役割をする boolean型の式です。
最初の式は、ループに入る直前に1回だけ呼び出される処理です。 ここでループの制御に必要なデータの初期化などを行います。
最後の3番目の式はループの処理がひととおり実行されるたびに呼び出されます。 ここの処理で、ループを制御する条件を変更することが可能です。
これらの3つの作業は常にすべて必要というわけではありません。 もし不要ならば記述を省略してもかまいません。ただし区切りの ;(セミコロン) は省略することができません。


for( 初期化の処理; 条件判定; 条件の変更の処理 ) {

    繰り返し処理の内容

}

・ while と forの記述は形式が異なるだけで、目的はまったく同じです。 while で書かれたものを forで書き直すのも、その逆も常に可能です。
強いて使い分けの目安を挙げるとするならば、 繰り返しの回数がループに入る前に判っている場合には、forを用いた方が 記述が見やすいでしょう。forのループはそうしたケースのループ (おそらく最も使用頻度が多い)に特化した記述方法と考える ことができるでしょう。
逆に繰り返しの回数が不定で、処理の結果に応じて繰り返しを続行するか どうか決まるような場合には、より一般的な記述である whileの方が柔軟に記述ができます。


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

   10回繰り返して行う処理
}


while( x < y ) {

    何回繰り返されるか予測できない処理
}