Java編程那些事兒38—break和continue語句鄭州遊戲學院 陳躍峰出自:http://blog.csdn.net/mailbomb
5.5 break和continue語句 break和continue語句是和迴圈語句緊密相關的兩種語句。其中break關鍵字的意思是中斷、打斷,continue關鍵字的意思是繼續。使用這兩個關鍵字可以調節迴圈的執行。
5.5.1 break語句 break語句在前面的switch語句中已經介紹過,功能的話是中斷switch語句的執行,在迴圈語句中,break語句的作用也是中斷迴圈語句,也就是結束迴圈語句的執行。 break語句可以用在三種迴圈語句的內部,功能完全相同。下面以while語句為例來說明break語句的基本使用及其功能。 範例程式碼: int i = 0; while(i < 10){ i++; if(i == 5){ break; } } 則該迴圈在變數i的值等於5時,滿足條件,然後執行break語句,結束整個迴圈,接著執行迴圈後續的代碼。 在迴圈語句中,可以使用break語句中斷正在執行的迴圈。 在實際的代碼中,結構往往會因為邏輯比較複雜,而存在迴圈語句的嵌套,如果break語句出現在迴圈嵌套的內部時,則只結束break語句所在的迴圈,對於其它的迴圈沒有影響,範例程式碼如下: for(int i = 0;i < 10;i++){ for(int j = 0;j < 5;j++){ System.out.println(j); if(j == 3){ break; } } } 則該break語句因為出現在迴圈變數為j的迴圈內部,則執行到break語句時,只中斷迴圈變數為j的迴圈,而對迴圈變數為i的迴圈沒有影響。 在上面的範例程式碼中,如果需要中斷外部的迴圈,則可以使用文法提供的標籤語句來標識迴圈的位置,然後跳出標籤對應的迴圈。範例程式碼如下: lable1: for(int i = 0;i < 10;i++){ for(int j = 0;j < 5;j++){ System.out.println(j); if(j == 3){ break label1; } } } 說明:這裡的label1是標籤的名稱,可以為Java語言中任意合法的標識符,標籤語句必須和迴圈匹配使用,使用時書寫在對應的迴圈語句的上面,標籤語句以冒號結束。如果需要中斷標籤語句對應的迴圈時,採用break後面跟標籤名的方式中斷對應的迴圈。則在該範例程式碼中break語句中斷的即迴圈變數為i的迴圈。 同樣的功能也可以使用如下的邏輯實現: boolean b = false; for(int i = 0;i < 10;i++){ for(int j = 0;j < 5;j++){ System.out.println(j); if(j == 3){ b = true; break; } } if(b){ break; } } 該範例程式碼中,通過組合使用2個break以及一個標識變數,實現跳出外部的迴圈結構。
5.5.2 continue語句 continue語句只能使用在迴圈語句內部,功能是跳過該次迴圈,繼續執行下一次迴圈結構。在while和do-while語句中continue語句跳轉到迴圈條件處開始繼續執行,而在for語句中continue語句跳轉到迭代語句處開始繼續執行。 下面以while語句為例,來說明continue語句的功能,範例程式碼如下: int i = 0; while(i < 4){ i++; if(i == 2){ continue; } System.out.println(i); } 則該代碼的執行結果是: 1 3 4 在變數i的值等於2時,執行continue語句,則後續未執行完成的迴圈體將被跳過,而直接進入下一次迴圈。 在實際的代碼中,可以使用continue語句跳過迴圈中的某些內容。 和前面介紹的break語句類似,continue語句使用在迴圈嵌套的內部時,也只是跳過所在迴圈的結構,如果需要跳過外部的迴圈,則需要使用標籤語句標識對應的迴圈結構。範例程式碼如下: lable1: for(int i = 0;i < 10;i++){ for(int j = 0;j < 5;j++){ System.out.println(j); if(j == 3){ continue label1; } } } 這樣在執行continue語句時,就不再是跳轉到j++語句,而是直接跳轉到i++語句。
5.5.3 小結 在實際的代碼中,可以根據需要使用break和continue語句調整迴圈語句的執行,break語句的功能是結束所在的迴圈,而continue語句的功能是跳過當次迴圈未執行的代碼,直接執行下一次迴圈。