while文は、ブール値の条件が真である限り、コードのブロックを繰り返すことができる制御フロー文です。for文と似ていますが、for文とは異なり、反復の回数はあらかじめ決められていません。
以下は、Javaのwhileループの構文です。
while (predicate) {
// 実行されるコードブロック
}
述語は、任意のブーリアン式を指定できます。条件が真であれば、whileループ内のコードブロックが実行されます。コードブロックが実行されると、条件が再びチェックされます。もし条件がまだ真であれば、コードブロックが再び実行されます。この処理は条件が偽になるまで続けられ、その時点でwhileループが終了し、プログラムの次のステートメントに制御が渡されます。
それでは例を見てみましょう。
int count = 1;
while (count <= 10) {
System.out.println("Count is: " + count);
count++;
}
この例では、whileループが10回実行され、そのたびにcountの値が1ずつ増えていきます。
無限ループとは、ループの条件が常に真であるため、無限に実行されるループのことです。無限ループは、プログラムがクラッシュしたり、利用可能なリソースをすべて消費してパフォーマンスが低下したりするため、一般にプログラミングエラーとみなされます。
以下は、Javaにおける無限ループの例です。
while (true) {
// 実行されるコードブロック
}
この例では、ループの条件は常に真なので、ループ内のコードブロックは無限に実行されることになります。
Javaでは、do-whileループは、ブール値の条件が真である限り、コードのブロックを繰り返すことができる制御フロー文です。whileループと似ていますが、ループの最初ではなく最後に条件を確認するため、do-whileループ内のコードブロックは少なくとも一度は実行されることが保証されている点が異なります。
以下は、Javaのdo-whileループの構文です。
do {
// 実行されるコードブロック
} while (predicate);
do-whileループ内のコードブロックが最初に実行され、その後、条件がチェックされます。条件が真であれば、コードブロックが再び実行されます。この処理は条件が偽になるまで続けられ、その時点でdo-whileループは終了し、プログラム内の次の文に制御が渡されます。
それでは例を見てみましょう。
int count = 1;
do {
System.out.println("Count is: " + count);
count++;
} while (count <= 10);
また、do-whileループの中でbreak文とcontinue文を使用することも可能です。break文はループを即座に終了させ、continue文は現在の反復処理の残りをスキップして次のループに移行させます。
以下は、Javaのwhileループ内でcontinue文を使用する例です。
int count = 1;
while (count <= 10) {
if (count % 2 == 0) {
count++;
continue;
}
System.out.println("Count is: " + count);
count++;
}
この例では、whileループが1から10までの値を繰り返し処理します。continue文は、countの値が偶数である場合に、現在の反復処理の残りをスキップするために使用されます。
以下は、Javaでdo-whileループの中でbreak文を使用する例です。
int count = 1;
do {
if (count == 5) {
break;
}
System.out.println("Count is: " + count);
count++;
} while (count <= 10);
この例では、do-whileループは1から10までの値を繰り返し処理します。countの値が5になったらbreak文を使ってループを終了させます。
while文の練習については、CS基礎/中級/制御フローで詳しく学習できます。