帶標簽的break

文章發(fā)布地址:https://blog.qiuluo.xin/2019/01/09/%E5%B8%A6%E6%A0%87%E7%AD%BE%E7%9A%84break/

在跳出循環(huán)或switch時,經(jīng)常會用到break語句,然而break只能跳出當前所在的循環(huán)。

要想跳出n層循環(huán)之外,使用自定義的標記變量太過繁瑣且容易出錯,還好java提供了帶標簽的break語句。

java的標簽只能定義在語句塊的上方,比如while、for循環(huán)至上。如下面的lab0lab1的形式定義??梢灾苯釉趦?nèi)層使用break lable跳出指定的代碼塊。

lab0:
for (int i = 0; i < 10; i++){
    lab1:
    for (int j = 0; j < 10; j++){
        for (int k = 0; k < 10; k++){
            System.out.println(k);
            if (k == 5) break lab1;
        }
    }
}

事實上,標簽不止可以定義在循環(huán)上,它可以定義在任何代碼塊上,從而使用break跳轉(zhuǎn)。比如下面的情況都可以使用break lable進行跳轉(zhuǎn)。

// if也可以使用標簽標記。
out:
if (value == 10){
    if (flag == true){
        break out;
    }
    System.out.println("一句話 value: "+value);
}
System.out.println("結(jié)束 value:"+value);
// 執(zhí)行后當value等于10時,不會輸出`跳出內(nèi)圈`,而是直接跳出整個代碼塊結(jié)束程序。
sta:
{
    System.out.println("外");
    {
        if (value == 10){
            break sta;
        }
        System.out.println("內(nèi)");
    }
    System.out.println("跳出內(nèi)圈");
}

注意:使用break lable進行跳轉(zhuǎn)時,只能從內(nèi)層跳轉(zhuǎn)到外層語句塊,而不能從外層調(diào)到內(nèi)層或平行的代碼塊。

這樣就避免了使break變成goto語句。

同時,除了有帶標簽的break外,java中還有帶標簽的continue,可以跳轉(zhuǎn)到指定循環(huán)的首部,而不跳轉(zhuǎn)到當前循環(huán)的首部。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容