while文とは
Javaのwhile文は、繰り返しをするための構文で、指定した条件が真である限り、繰り返し処理を行います。
そして、処理が終了すると、再び条件式が評価され、条件式が偽になるまでこの処理が繰り返されます。
while文の基本的な書き方
while文の基本的な書き方は、以下のようになります。
while文の処理の流れ
- 条件式が評価されます。
- 条件式がtrueの場合、中括弧内の処理が実行されます。
- 中括弧内の処理が完了したら、再度条件式が評価されます。
- 条件式がtrueの場合、再度中括弧内の処理が実行されます。
- 2~4を繰り返し、条件式がfalseになったらwhile文を抜けます。
while文の特徴
- 繰り返し回数が決まっていない場合に利用されます。
- 条件式がtrueである限り、中括弧内の処理が繰り返し実行されます。
- 初めから条件式がfalseの場合、中括弧内の処理は一度も実行されません。
while文を使用する例
先ほどの具体例より解説します。
public class Sample {
public static void main(String[] args) {
int num = 0;
while (num < 5) {// 5回だけ繰り返すループ
System.out.println("Hello, World!"); // 「Hello, World!」というメッセージを表示する
num++;
}
}
}
この例では、変数 i
を初期化し、while
文の条件式である i < 5
を評価します。
この条件式は、i
が 5
未満の間は真(true)となります。
while
文の中身であるブロック { ... }
内の処理は、条件式が真である限り、繰り返し実行されます。
「Hello, World!」という文字列を表示する命令が、while
文の条件式が真である間に繰り返し実行されます。
i++;
は、変数 i
の値を1増やす命令です。
この命令がなければ、while
文の条件式が永遠に真のままで、プログラムが終了しなくなってしまいます。
以上のように、while
文を使えば、特定の条件が満たされるまで、繰り返し処理を行うことができます。
while文とfor文の違い
初期化式と変化式の有無
while文には初期化式や変化式がありません。
そのため、while文を使う場合にはループ変数を明示的に初期化し、ループ内で変数を更新する必要があります。
一方、for文には初期化式や変化式があります。
初期化式はループ開始時に一度だけ実行され、変化式はループの最後に実行されます。
【while文】
while文は、条件式がtrueである限り、繰り返し処理を行う制御文です。
例えば、1から10までの整数を順番に表示するプログラムをwhile文で書くと、以下のようになります。
public class Sample {
public static void main(String[] args) {
int i = 1; // ループ変数を明示的に初期化
while (i <= 10) { // 条件式
System.out.println(i);
i++; // ループ内で変数を更新
}
}
}
このプログラムでは、ループ変数iを1で初期化しています。
while文の条件式で、iが10以下である限り繰り返し処理を行います。
繰り返し処理の中で、現在のiの値を表示しています。
そして、ループ内でiを1を加えて変数を更新しています。
【for文】
for文は、ある範囲内で繰り返し処理を行う制御文です。
for文には、初期化式、条件式、変化式が必要です。
条件式がfalseになるまで繰り返し処理を行います。
例えば、1から10までの整数を順番に表示するプログラムをfor文で書くと、以下のようになります。
public class Sample {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) { // 初期化式、条件式、変化式
System.out.println(i);
}
}
}
このプログラムでは、for文の初期化式で変数iを1で初期化しています。
for文の条件式で、iが10以下である限り繰り返し処理を行います。
繰り返し処理の中で、現在のiの値を表示しています。
そして、変化式でiを1増やしています。
条件式の評価タイミング
while文では、条件式はループの先頭で評価されます。
すなわち、最初に条件式を評価してから、ループ本体が実行されます。
そのため、条件式が真である場合は、ループ本体が少なくとも1回は実行されますが、条件式が偽である場合は、ループ本体は一度も実行されずにループが終了します。
一方、for文では、条件式はループ本体の前に評価されます。
for文の場合、初期化式、条件式、更新式の3つの式がセミコロンで区切られています。
初期化式はループの先頭で1回だけ評価され、次に条件式が評価されます。
条件式が真である場合は、ループ本体が実行されます。
ループ本体が実行された後、更新式が評価され、条件式が再び評価されます。
このプロセスが繰り返されます。
条件式が偽になるまでループが続きます。
以下は、while文とfor文の条件式の評価タイミングの違いを示すJavaのコード例です。
public class Sample {
public static void main(String[] args) {
// while文の例
int i = 1;
while (i < 5) {
System.out.println(i);
i++;
}
// for文の例
for (int j = 1; j < 5; j++) {
System.out.println(i);
}
}
}
使用する場面の違い
while文は、繰り返し回数が決まっていない場合に使用されます。
一方、for文は、繰り返し回数が決まっている場合に使用されます。
また、for文は、初期化式や変化式が簡潔であり、コードの可読性が高くなる場合があります。
while文とfor文は、どちらも繰り返し処理を行うために用いられる制御構造ですが、使用する場面によって適切な選択をする必要があります。
【while文の使用する場面】
while文は、繰り返し処理を行いながら条件式が真の場合に実行されます。
具体的には、以下のような場面で使われます。
- 繰り返し回数が不明な場合:for文では何回繰り返すか決まっている場合が多いですが、while文は条件式が満たされる限り繰り返します。例えば、ユーザーからの入力を受け取ってその値が特定の条件を満たすまで処理を繰り返す場合などがあります。
- 繰り返す回数が少ない場合:for文は初期化式、条件式、変化式の3つの式を書く必要があり、1つ1つを書く手間がかかります。繰り返す回数が少ない場合は、while文で書いた方がコードが簡潔になります。
- 繰り返す条件が複雑な場合:for文の条件式は単純な式でなければならないため、繰り返す条件が複雑な場合はwhile文の方が書きやすいです。
【for文の使用する場面】
for文は、あらかじめ繰り返す回数が決まっている場合に使用されます。
具体的には、以下のような場面で使われます。
- 繰り返す回数が決まっている場合:for文は初期化式、条件式、変化式の3つの式を書くことで、繰り返す回数が明確になります。例えば、配列の全要素に対して同じ処理を行う場合や、1から10までの数字を順番に出力する場合などがあります。
- 繰り返し回数が多い場合:while文は繰り返し回数が不明な場合が多く、多くの場合はfor文を使用します。for文は回数が決まっているため、コードの読みやすさや保守性を高めることができます。
以上がwhile文とfor文の違いです。適切な場面で、適切なループを選択することがプログラムの効率性や可読性につながります。
コメント