您好,登錄后才能下訂單哦!
break如何在Java項目中使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
在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后面的循環都不會執行
看完上述內容,你們掌握break如何在Java項目中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。