Posted at

for 文と while 文の違い

More than 3 years have passed since last update.

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 文を使う