Java中break的第三種用法說明
在Java中,break語句有三種用法,第一種是用于終止switch語句中的語句序列,第二種是用于退出循環(huán),然而第三種是用作goto語句的“文明”形式!
我們知道,goto語句會破壞程序的結(jié)構(gòu),所以我們一般不會去使用這種功能。但是在某些情況下,goto語句對于流程控制很有價值并且結(jié)構(gòu)合法。
比如當(dāng)退出深度嵌套的一系列循環(huán)時,goto語句很好用。雖然Java中保留了goto關(guān)鍵字,但是沒有g(shù)oto語句,也沒有任何用到這個關(guān)鍵字的地方,所以為了能夠使用類似像goto語句這樣的功能,Java定義了break語句的一種擴(kuò)展形式。
即通過這種形式的break語句,可以中斷一個或多個代碼塊。而且這些代碼塊不必是某個循環(huán)或switch語句的一部分,他們可以是任何代碼塊。
此外這種形式的break語句可以精確指定準(zhǔn)備在哪個位置繼續(xù)執(zhí)行,因為這種形式的break語句是使用標(biāo)簽來進(jìn)行工作的。
使用標(biāo)簽的break語句的一般語法形式如下:
break label;
label是一個代碼塊的標(biāo)簽的名稱。它既可以是一個獨(dú)立的代碼塊,也可以作為另一條語句的目標(biāo)代碼塊。
當(dāng)執(zhí)行這種形式的break語句時,程序的執(zhí)行控制會跳出由標(biāo)簽命名的代碼塊,具有標(biāo)簽的代碼塊必須包含break語句,但是不必立即包含break語句。
也就是說,可以使用帶有標(biāo)簽的break語句跳出一系列嵌套的代碼。但是不能使用break語句將控制轉(zhuǎn)移出不包含break語句的代碼塊。
為了命名代碼塊,可以在代碼塊之前放一個標(biāo)簽,標(biāo)簽可以是任何合法的java標(biāo)識符,后面跟隨一個冒號。
只要代碼塊被命名,就可以使用命名標(biāo)簽作為break語句的目標(biāo),這樣一來就可以跳出代碼塊,在標(biāo)識的代碼塊的末端恢復(fù)執(zhí)行。
如下程序代碼:
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"); } }
輸出結(jié)果如下:
0
1
2
5
所以break語句的這種擴(kuò)展形式提供了goto語句的優(yōu)點,而沒有g(shù)oto語句的問題。
補(bǔ)充知識:Java多重循環(huán)以及break和continue使用方法
多重循環(huán)
循環(huán)體中包含循環(huán)語句的結(jié)構(gòu)稱為多重循環(huán)。三種循環(huán)語句可以自身嵌套,也可以相互嵌套,最常見的就是二重循環(huán)。在二重循環(huán)中,外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)要執(zhí)行一圈。
如下所示:
例如:使用 * 打印長方形:
實現(xiàn)代碼為:
執(zhí)行流程:當(dāng) i = 1 時,外層循環(huán)條件成立,進(jìn)入內(nèi)層循環(huán),開始打印第一行內(nèi)容。此時, j 從 1 開始,循環(huán) 8 次,內(nèi)層循環(huán)結(jié)束后換行,實現(xiàn)第一行 8 個 * 的輸出。
接下來返回外層循環(huán) i 變?yōu)?2 ,準(zhǔn)備打印下一行,依此類推,直到完成長方形的打印。
for(int i=0;i<5;i++){ for(int j=1;j<=5;j++){//i每增加1,也就是for循環(huán)一次,這個循環(huán)for要循環(huán)完,要循環(huán)5次。也就是一圈。 } }
簡單的說,就是外層執(zhí)行一次的時候,里面(第二個for)已經(jīng)執(zhí)行一遍了
break, continue語句
break與continue語句和都是可以控制循環(huán)的執(zhí)行流程的,其中break語句可以直接強(qiáng)行跳出整個循環(huán),默認(rèn)情況下直接跳到下一條語句進(jìn)行執(zhí)行。比如我們要輸出類似下面的三角形星號符。
break可以在if-else中使用直接跳出當(dāng)前循環(huán)。
在多層循環(huán)中, 一個break語句只向外跳一層。
continue語句的作用是跳過循環(huán)體中剩余的語句并到循環(huán)末尾而強(qiáng)行執(zhí)行下一次循環(huán)。
continue語句只用在for、while、do-while等循環(huán)體中, 常與if條件語句一起使用, 用來加速循環(huán)。
for (int i = 0; i < 3; i++) { System.out.println("開始第" + i + "次for循環(huán)"); if (i == 1) { continue;//程序運(yùn)行后面的代碼就不會執(zhí)行,但循環(huán)不會退出。 } System.out.println("看看continue后這里執(zhí)行了嗎?"); }
如果以上語句用break的話,1后面的循環(huán)都不會執(zhí)行
以上這篇Java中break的第三種用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java入門基礎(chǔ)之常規(guī)的命名方法和變量的值及其引用
這篇文章主要介紹了Java的命名方法和變量的值及其引用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-09-09MyBatis Plus Mapper CRUD接口測試方式
在數(shù)據(jù)庫管理系統(tǒng)中,插入記錄是添加新數(shù)據(jù)條目,而刪除操作包括根據(jù)主鍵ID單條刪除和批量刪除,也可以基于特定條件進(jìn)行刪除,刪除操作的SQL語句是通過鍵值對在Map中拼接而成,如delete from 表 where key1=value1 AND key2=value22024-09-09selenium4.0版本在springboot中的使用問題的坑
本文主要介紹了selenium4.0版本在springboot中的使用問題的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Java開發(fā)者就業(yè)需要掌握的9大專業(yè)技能
這篇文章主要為大家詳細(xì)介紹了java就業(yè)前需要掌握的專業(yè)技能,感興趣的小伙伴們可以參考一下2016-09-09java Person,Student,GoodStudent 三個類的繼承、構(gòu)造函數(shù)的執(zhí)行
這篇文章主要介紹了java Person,Student,GoodStudent 三個類的繼承、構(gòu)造函數(shù)的執(zhí)行,需要的朋友可以參考下2017-02-02Java的非對稱加密(RSA、數(shù)字簽名、數(shù)字證書)詳解
這篇文章主要介紹了Java的非對稱加密(RSA、數(shù)字簽名、數(shù)字證書)詳解,非對稱加密:加密、解密使用不同的兩把密鑰,這兩把密鑰成對,一般通信開始時通過非對稱加密將對稱加密的密鑰發(fā)送給另一方,然后雙方通過對稱加密來進(jìn)行溝通,需要的朋友可以參考下2024-01-01