LoginSignup
37
36

More than 5 years have passed since last update.

for 文と while 文の違い

Posted at

Java における for 文と while 文についてまとめました。

for 文

forExample.java
for (int i = 0; i < 5; i++) {
    text += "The number is " + i + "<br>";
}
  • 括弧の中には初期化式、条件式、変化式
  • i のスコープは for 文の中だけ
  • i をスコープ外にまたがって使用する場合、
    スコープの外で宣言しておく必要がある
  • 実は処理が一行だけなら中括弧はなくても動く
  • 変化式が実行されるのは処理が行われたあと
  • list 等の中身を全て参照する場合などには for-each 文が使える
forEachExample.java
List<String> list = new ArrayList<String>();
list.add("test1");
list.add("test2");
list.add("test3");
// for 文 で書いた場合
for (int i=0; i<list.size(); i++) {
  System.out.println(list.get(i));
}
// for-each 文だと
for (String str : list) {
  System.out.println(str);
}

while 文

whileExample.java
int i = 0;

while (i < 2){
  System.out.println("i = " + i);
  i++;
}
  • 括弧の中に入るのは条件式のみ
  • 条件式を判定する前に処理を行わせる do-while 文もある

do-while 文

doWhileExample.java
int count = 1;
do {
  System.out.println("Count is: " + count);
  count++
} while (count < 11);

break 文

breakExample.java
int num = 1;

while(true){
  System.out.println(num);
  num++;

  if (num > 100){
    break;
  }
}
  • 今いる while 文及び for 文から抜け出し繰り返しを中断する際に使う
  • 今いるところのさらに外側へ抜ける処理をする場合はラベルを使う

ラベル

breakLabelExample.java
loop1:  for (i = 0; i < 10; i++) {
            for (j = 0; j < 10; j++) {
                if ((i == 1) && (j == 5)) {
                    break loop1;
                }
            }
        }
  • この break はラベルで指定されたところから抜け出す処理を行う

continue 文

continueExample
for (int i = 0; i < 10; i++){
  if (i == 3){
    continue;
  }

  System.out.println(i);
}
  • break 文とは異なり、処理は中断しない
  • continue 文に到達した地点から次の条件式判定まで処理をスキップさせる
  • break 文のようにラベルを使うことも出来る

for と while の使い分け

  • 単純な前処理、単純な後処理が必要な反復処理においては for 文
    • 例えば: 繰り返す回数が分かっている処理など
  • 複雑な前処理や後処理が必要な反復処理が必要な場合は while 文を使う
37
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
36