無論是while循環還是for循環,有兩個特别的語句可以使用,就是break語句和continue語句。
break
在循環過程中,可以使用break語句跳出目前循環。我們來看一個例子:
// break
----
public class Main {
public static void main(String[] args) {
int sum = 0;
for (int i=1; ; i++) {
sum = sum + i;
if (i == 100) {
break;
}
}
System.out.println(sum);
}
}
使用for循環計算從1到100時,我們并沒有在for()中設定循環退出的檢測條件。但是,在循環内部,我們用if判斷,如果i==100,就通過break退出循環。
是以,break語句通常都是配合if語句使用。要特别注意,break語句總是跳出自己所在的那一層循環。例如:
// break
----
public class Main {
public static void main(String[] args) {
for (int i=1; i<=10; i++) {
System.out.println("i = " + i);
for (int j=1; j<=10; j++) {
System.out.println("j = " + j);
if (j >= i) {
break;
}
}
// break跳到這裡
System.out.println("breaked");
}
}
}
上面的代碼是兩個for循環嵌套。因為break語句位于内層的for循環,是以,它會跳出内層for循環,但不會跳出外層for循環。
continue
break會跳出目前循環,也就是整個循環都不會執行了。而continue則是提前結束本次循環,直接繼續執行下次循環。我們看一個例子:
// continue
----
public class Main {
public static void main(String[] args) {
int sum = 0;
for (int i=1; i<=10; i++) {
System.out.println("begin i = " + i);
if (i % 2 == 0) {
continue; // continue語句會結束本次循環
}
sum = sum + i;
System.out.println("end i = " + i);
}
System.out.println(sum); // 25
}
}
注意觀察continue語句的效果。當i為奇數時,完整地執行了整個循環,是以,會列印begin i=1和end i=1。在i為偶數時,continue語句會提前結束本次循環,是以,會列印begin i=2但不會列印end i = 2。
在多層嵌套的循環中,continue語句同樣是結束本次自己所在的循環。
小結
break語句可以跳出目前循環;
break語句通常配合if,在滿足條件時提前結束整個循環;
break語句總是跳出最近的一層循環;
continue語句可以提前結束本次循環;
continue語句通常配合if,在滿足條件時提前結束本次循環。