Java中break的第三種用法說明
在Java中,break語句有三種用法,第一種是用於終止switch語句中的語句序列,第二種是用於退出迴圈,然而第三種是用作goto語句的“文明”形式!
我們知道,goto語句會破壞程式的結構,所以我們一般不會去使用這種功能。但是在某些情況下,goto語句對於流程控制很有價值並且結構合法。
比如當退出深度巢狀的一系列迴圈時,goto語句很好用。雖然Java中保留了goto關鍵字,但是沒有goto語句,也沒有任何用到這個關鍵字的地方,所以為了能夠使用類似像goto語句這樣的功能,Java定義了break語句的一種擴充套件形式。
即通過這種形式的break語句,可以中斷一個或多個程式碼塊。而且這些程式碼塊不必是某個迴圈或switch語句的一部分,他們可以是任何程式碼塊。
此外這種形式的break語句可以精確指定準備在哪個位置繼續執行,因為這種形式的break語句是使用標籤來進行工作的。
使用標籤的break語句的一般語法形式如下:
break label;
label是一個程式碼塊的標籤的名稱。它既可以是一個獨立的程式碼塊,也可以作為另一條語句的目的碼塊。
當執行這種形式的break語句時,程式的執行控制會跳出由標籤命名的程式碼塊,具有標籤的程式碼塊必須包含break語句,但是不必立即包含break語句。
也就是說,可以使用帶有標籤的break語句跳出一系列巢狀的程式碼。但是不能使用break語句將控制轉移出不包含break語句的程式碼塊。
為了命名程式碼塊,可以在程式碼塊之前放一個標籤,標籤可以是任何合法的java識別符號,後面跟隨一個冒號。
只要程式碼塊被命名,就可以使用命名標籤作為break語句的目標,這樣一來就可以跳出程式碼塊,在標識的程式碼塊的末端恢復執行。
如下程式程式碼:
class Dome { public static void main(String[] args) { a:{ System.out.println("0"); b:{ System.out.println("1"); c:{ System.out.println("2"); if(1==1) break a; } System.out.println("3"); }a System.out.println("4"); } System.out.println("5"); } }
輸出結果如下:
0
1
2
5
所以break語句的這種擴充套件形式提供了goto語句的優點,而沒有goto語句的問題。
補充知識:Java多重迴圈以及break和continue使用方法
多重迴圈
迴圈體中包含迴圈語句的結構稱為多重迴圈。三種迴圈語句可以自身巢狀,也可以相互巢狀,最常見的就是二重迴圈。在二重迴圈中,外層迴圈每執行一次,內層迴圈要執行一圈。
如下所示:
例如:使用 * 列印長方形:
實現程式碼為:
執行流程:當 i = 1 時,外層迴圈條件成立,進入內層迴圈,開始列印第一行內容。此時, j 從 1 開始,迴圈 8 次,內層迴圈結束後換行,實現第一行 8 個 * 的輸出。
接下來返回外層迴圈 i 變為 2 ,準備列印下一行,依此類推,直到完成長方形的列印。
for(int i=0;i<5;i++){ for(int j=1;j<=5;j++){//i每增加1,也就是for迴圈一次,這個迴圈for要迴圈完,要迴圈5次。也就是一圈。 } }
簡單的說,就是外層執行一次的時候,裡面(第二個for)已經執行一遍了
break,continue語句
break與continue語句和都是可以控制迴圈的執行流程的,其中break語句可以直接強行跳出整個迴圈,預設情況下直接跳到下一條語句進行執行。比如我們要輸出類似下面的三角形星號符。
break可以在if-else中使用直接跳出當前迴圈。
在多層迴圈中,一個break語句只向外跳一層。
continue語句的作用是跳過迴圈體中剩餘的語句併到迴圈末尾而強行執行下一次迴圈。
continue語句只用在for、while、do-while等迴圈體中,常與if條件語句一起使用,用來加速迴圈。
for (int i = 0; i < 3; i++) { System.out.println("開始第" + i + "次for迴圈"); if (i == 1) { continue;//程式執行後面的程式碼就不會執行,但迴圈不會退出。 } System.out.println("看看continue後這裡執行了嗎?"); }
如果以上語句用break的話,1後面的迴圈都不會執行
以上這篇Java中break的第三種用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。