break
可以離開目前switch、for、while、do..while
的區塊,並執行區塊後下一個陳述句,在switch
中主要用來中斷下一個case
比對,在for、while
與do..while
中,主要用於中斷目前迴圈。continue
作用與break
類似,不過使用於迴圈,break
會結束區塊執行,而continue
只會略過之後陳述句,並回到迴圈區塊開頭進行下一次迴圈,而不是離開迴圈。例如:for(int i = 1; i < 10; i++) {
if(i == 5) {
break;
}
System.out.printf("i = %d%n", i);
}
這段程式會顯示i = 1到i = 4,因為在
i
等於5時就會執行break
而離開迴圈。再看下面這個程式:for(int i = 1; i < 10; i++) {
if(i == 5) {
continue;
}
System.out.printf("i = %d%n", i);
}
這段程式會顯示i =1到4,以及6到9,當i等於5時,會執行continue直接略過之後陳述句,也就是該次的System.out.printf()該行並沒有被執行,直接從區塊開頭執行下一次迴圈,所以i = 5沒有被顯示。
break
與continue
還可以配合標籤使用,例如本來break
只會離開for
迴圈,設定標籤與區塊,則可以離開整個區塊。back : {
for(int i = 0; i < 10; i++) {
if(i == 9) {
System.out.println("break");
break back;
}
}
System.out.println("test");
}
程式執行結果會顯示
break
;back
是個標籤,當break back;
時,返回至back
標籤處,之後整個back
區塊不執行而跳過,所以System.out.println("test")
該行不會被執行。continue
也有類似的用法,只不過標籤只能設定在for
之前。例如:back1:
for(int i = 0; i < 10; i++){
back2:
for(int j = 0; j < 10; j++) {
if(j == 9) {
continue back1;
}
}
System.out.println("test");
}
continue
配合標籤,可以自由地跳至任何一層for
迴圈,可以試試continue back1
與continue back2
的不同,設定back1
時,System.out.println("test")
不會被執行。