java 中 break continue label的使用

java中 label 配合 break continue 使用的其實(shí)是比較少的.
這種做法在業(yè)務(wù)代碼中比較少見.
在讀其他庫的代碼時可能會遇到該語法的使用.
下面對該語法做簡短解釋.

break label

用來終止循環(huán)體的循環(huán),使用break 可以終止的循環(huán)體包括三種, for,while,do-while

不帶 label使用 break 時

執(zhí)行 break ,會終止離 break 關(guān)鍵字最近的循環(huán)體的循環(huán).
示例如下

for (int i = 0; i < 3; i++) {
    System.out.println(String.format("start outer for loop index %d", i));
    int j = 0;
    while (true) {
        System.out.println(String.format("inner loop with while index %d", j));
        if (j == 2) {
            //終止最近的for,while,do-while循環(huán)
            break;
        } else {
            j++;
        }
    }
    System.out.println(String.format("end outer for loop index %d", i));
}

結(jié)果為

start outer for loop index 0
inner loop with while index 0
inner loop with while index 1
inner loop with while index 2
end outer for loop index 0
start outer for loop index 1
inner loop with while index 0
inner loop with while index 1
inner loop with while index 2
end outer for loop index 1
start outer for loop index 2
inner loop with while index 0
inner loop with while index 1
inner loop with while index 2
end outer for loop index 2

通過打印可以看出,內(nèi)部循環(huán)每次執(zhí)行到2時就將當(dāng)前 while 死循環(huán)停止.
而外部循環(huán)則會從0遍歷到2,正常循環(huán)遍歷.不受 break 的影響.

帶 label 的break

會終止指定 label 所對應(yīng)的循環(huán)體.
示例為從二維的student age 數(shù)組中,找第一個年紀(jì)為9歲的學(xué)生.

int students[][] = {{10, 12, 11}, {8, 9, 1}, {9, 15, 7}};
jumpOutHere:
for (int i = 0; i < 3; i++) {
    System.out.println(String.format("start outer for loop index %d", i));
    int j = 0;
    while (j < 3) {
        System.out.println(String.format("current retrieve value %d", students[i][j]));
        if (students[i][j] == 9) {
            break jumpOutHere;
        } else {
            j++;
        }
    }
    System.out.println(String.format("end outer for loop index %d", i));
}

結(jié)果為

start outer for loop index 0
current retrieve value 10
current retrieve value 12
current retrieve value 11
end outer for loop index 0
start outer for loop index 1
current retrieve value 8
current retrieve value 9

當(dāng)遍歷到二維數(shù)組中第一個年紀(jì)為9的學(xué)生時,直接終止 label 對應(yīng)的循環(huán).此處為外層循環(huán).

continue label

用來跳過循環(huán)體中本次執(zhí)行的循環(huán),使用continue 可以跳過的循環(huán)體包括三種, for,while,do-while

不帶 label 的 continue

會跳過距離continue最近的循環(huán)體的本次執(zhí)行,執(zhí)行下一次循環(huán)

for (int i = 0; i < 3; i++) {
    System.out.println(String.format("start outer for loop index %d", i));
    for(int k = 0;k<3;k++){
        if(k==1)
            continue;
        System.out.println(String.format("inner loop index %d",k));
    }
    System.out.println(String.format("end outer for loop index %d", i));
}

start outer for loop index 0
inner loop index 0
inner loop index 2
end outer for loop index 0
start outer for loop index 1
inner loop index 0
inner loop index 2
end outer for loop index 1
start outer for loop index 2
inner loop index 0
inner loop index 2
end outer for loop index 2

通過示例可以看出當(dāng) k=1時會跳過本次內(nèi)部循環(huán)(也是離 continue 最近的循環(huán)),直接執(zhí)行下一次內(nèi)部循環(huán).

帶 label 的 continue

會跳過標(biāo)記為 label 的循環(huán)體中的本次循環(huán)的執(zhí)行,并執(zhí)行, label 標(biāo)記位置的下一個循環(huán).

CONTINU_LABLE:
for (int i = 0; i < 3; i++) {
    System.out.println(String.format("start outer for loop index %d", i));
    for (int k = 0; k < 3; k++) {
        if (k == 1)
            continue CONTINU_LABLE;
        System.out.println(String.format("inner loop index %d", k));
    }
    System.out.println(String.format("end outer for loop index %d", i));
}

start outer for loop index 0
inner loop index 0
start outer for loop index 1
inner loop index 0
start outer for loop index 2
inner loop index 0

通過結(jié)果可以看出,當(dāng) k=1時,直接就跳到CONTINU_LABLE標(biāo)記的循環(huán)體的下一次循環(huán)了.

結(jié)尾

喜歡的麻煩點(diǎn)個贊,關(guān)注下.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末壳嚎,一起剝皮案震驚了整個濱河市羽历,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌津坑,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件查库,死亡現(xiàn)場離奇詭異鼎姊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)箍鼓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門崭参,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人款咖,你說我怎么就攤上這事何暮。” “怎么了铐殃?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵海洼,是天一觀的道長。 經(jīng)常有香客問我背稼,道長贰军,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮词疼,結(jié)果婚禮上俯树,老公的妹妹穿的比我還像新娘。我一直安慰自己贰盗,他們只是感情好许饿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布烁试。 她就那樣靜靜地躺著榛丢,像睡著了一般寞奸。 火紅的嫁衣襯著肌膚如雪嘁信。 梳的紋絲不亂的頭發(fā)上墩虹,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天罢杉,我揣著相機(jī)與錄音饱亿,去河邊找鬼修己。 笑死赴蝇,一個胖子當(dāng)著我的面吹牛菩浙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播句伶,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼劲蜻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了考余?” 一聲冷哼從身側(cè)響起先嬉,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎楚堤,沒想到半個月后疫蔓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钾军,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年鳄袍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吏恭。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡拗小,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出樱哼,到底是詐尸還是另有隱情哀九,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布搅幅,位于F島的核電站阅束,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茄唐。R本人自食惡果不足惜息裸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一蝇更、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呼盆,春花似錦年扩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腿时,卻和暖如春况脆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背批糟。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工格了, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徽鼎。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓笆搓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纬傲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,312評論 0 10
  • 今天就從這句話開始說起:孤獨(dú)和寂寞不一樣肤频,寂寞會發(fā)慌叹括,孤獨(dú)則是飽滿的∠模——蔣勛先生《孤獨(dú)六講》 人喜歡品嘗寂寞汁雷,但...
    觀棋不語閱讀 339評論 0 1
  • 今晚畫了一頭熊,還需要修改报咳。
    則魚閱讀 210評論 0 1