break可以離開當前switch、for、while、do while的程序塊,並前進至程序塊后下一條語句,在switch中主要用來中斷下一個case的比較。在for、while與do while中,主要用於中斷目前的循環執行。
注意:循環嵌套時只會跳出帶break那層的循環,例如
1 class test{ 2 public static void main(String[] args) { 3 for (int i = 0; i < 3; i++) { 4 for (int j = 0; j < 4; j++) { 5 if (j == 3) { 6 break; 7 } 8 System.out.println("j" + j); 9 } 10 System.out.println("i" + i); 11 } 12 13 } 14 }
只會跳出內層循環,j=3那層沒有,結果如下:
1 j0 2 j1 3 j2 4 i0 5 j0 6 j1 7 j2 8 i1 9 j0 10 j1 11 j2 12 i2
continue的作用與break類似,主要用於循環,所不同的是break會結束程序塊的執行,而continue只會結束其之后程序塊的語句,並跳回循環程序塊的開頭繼續下一個循環,而不是離開循環,這個一般比較好理解。
break與continue還可以配合標簽使用,例如本來break只會離開for循環,設定標簽與程序塊,則可以離開整個程序塊。下面來進行示范:
1 public class BreakTest { 2 public static void main(String[] args) { 3 back : { 4 for(int i = 0; i < 10; i++) { 5 if(i == 9) { 6 System.out.println("break"); 7 break back; 8 } 9 } 10 System.out.println("test"); 11 } 12 } 13 }
程序的執行結果會顯示break;back是個標簽,當break back;時,返回至back標簽處,之后整個back程序塊不執行而跳過,所以這個程序System.out.println("test");不會被執行。
事實上continue也有類似的用法,只不過標簽只能設定在for之前,看下面的例子:
1 public class ContinueTest { 2 3 public static void main(String[] args) { 4 back1: 5 for(int i = 0; i < 10; i++){ 6 back2: 7 for(int j = 0; j < 10; j++) { 8 if(j == 9) { 9 continue back1; 10 } 11 } 12 System.out.println("test"); 13 } 14 } 15 }
continue配合標簽,可以自由地跳至任何一層for循環,您可以試試continue back1與continue back2的不同。設定back1時,System.out.println("test");不會被執行。