欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?for循環(huán)標簽跳轉(zhuǎn)到指定位置的示例詳解

 更新時間:2023年05月11日 08:49:52   作者:xfcoding  
這篇文章主要介紹了Java?for循環(huán)標簽跳轉(zhuǎn)到指定位置,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Java for循環(huán)標簽跳轉(zhuǎn)到指定位置

大家是否見過這種for循環(huán),在for循環(huán)前加了個標記的:

outerLoop:
for (; ; ) {
    for (; ; ) {
        break outerLoop;
    }
}

我之前有一次在公司業(yè)務代碼中見過有這種寫法的,沒在意,今天在看JDK線程池的代碼時,又看到ThreadPoolExecutoraddWorker方法中有這種寫法。于是就查了相關(guān)資料,也比較簡單。

總結(jié)下它的用法吧:

  • 上面代碼中的outerLoop是一個標記外層for循環(huán)的標簽,它可以隨便命名。
  • 該標簽主要用于for循環(huán)嵌套的情況,結(jié)合breakcontinue跳轉(zhuǎn)到外層for循環(huán);

我們知道,break的作用是跳出當前循環(huán),continue的作用是結(jié)束本次循環(huán),繼續(xù)下次循環(huán)。如果有雙層for循環(huán),在內(nèi)層的for循環(huán)中,想直接跳出所有循環(huán),使用break outerLoop就可以實現(xiàn);而continue outerLoop的作用是結(jié)束外層的本次循環(huán),繼續(xù)外層的下一次循環(huán)。

舉個例子:

public static void main(String[] args) {
    String[] strings = {"1", "2", "3"};
    outerLoop:
    for (String str : strings) {
        for (; ; ) {
            if (str.equals("1")) {
                break;
            }
            if (str.equals("2")) {
                continue outerLoop;
            }
            if (str.equals("3")) {
                break outerLoop;
            }
        }
        System.out.println("str.equals(1)");
    }
    System.out.println("str.equals(3)");
}

上面代碼中雙重for循環(huán),執(zhí)行邏輯為:

  • 第一個if跳出當前內(nèi)層循環(huán),會打印str.equals(1);
  • 第二個if執(zhí)行外層for循環(huán)的下一次循環(huán);
  • 最后一次循環(huán),str的值為3,跳出外層循環(huán),結(jié)束整個循環(huán),然后打印str.equals(3)。

這種for加標簽的寫法確實很少見,學Java的時候都沒學這個東西,實際寫業(yè)務代碼的時候能避免就避免,內(nèi)層循環(huán)能抽就抽個方法。如果業(yè)務太復雜抽不了,這種寫法也不失為一種策略。

補充:java for 循環(huán)continue 跳轉(zhuǎn)到外層

for (int i = 0; i < cardRecordsList.size(); i++) {
            BomCardRecords bomCardRecords = cardRecordsList.get(i);
            String recordsContent = bomCardRecords.getRecordsContent();
            if (i == 0){
                recordsContent += "$$$狀態(tài)";
            }
            String[] contentArr = recordsContent.split("\\$\\$\\$", -1);
            List<String> needData = new ArrayList<>();
            for (int j = 0; j < contentArr.length; j++) {
                String contentColumn = contentArr[contentArr.length - 1];
                if (StringUtils.isBlank(state)) {
                    clearUpData(columns, partList, contentArr, columnArr, needData);
                    continue;
                } else {
                    String[] stateArr = state.split(" ");
                    List<String> stateList = Arrays.asList(stateArr);
                    contentColumn = contentColumn.split(",")[0];
                    if (contentColumn.equals("狀態(tài)") || stateList.contains(contentColumn)) {
                        clearUpData(columns, partList, contentArr, columnArr, needData);
                        continue;
                    }
                }
            }
        }

continue 跳出循環(huán)

如上代碼我們是嵌套循環(huán) , 當我們循環(huán)完畢時需要跳出最外層循環(huán) , 我們只需要在跳轉(zhuǎn)的的地方這么來寫

my:
        for (int i = 0; i < cardRecordsList.size(); i++) {
            BomCardRecords bomCardRecords = cardRecordsList.get(i);
            String recordsContent = bomCardRecords.getRecordsContent();
            if (i == 0){
                recordsContent += "$$$狀態(tài)";
            }
            String[] contentArr = recordsContent.split("\\$\\$\\$", -1);
            List<String> needData = new ArrayList<>();
            for (int j = 0; j < contentArr.length; j++) {
                String contentColumn = contentArr[contentArr.length - 1];
                if (StringUtils.isBlank(state)) {
                    clearUpData(columns, partList, contentArr, columnArr, needData);
                    continue my;
                } else {
                    String[] stateArr = state.split(" ");
                    List<String> stateList = Arrays.asList(stateArr);
                    contentColumn = contentColumn.split(",")[0];
                    if (contentColumn.equals("狀態(tài)") || stateList.contains(contentColumn)) {
                        clearUpData(columns, partList, contentArr, columnArr, needData);
                        continue my;
                    }
                }
            }
        }

這樣我們就可continue到最外層循環(huán)了

到此這篇關(guān)于Java for循環(huán)標簽跳轉(zhuǎn)到指定位置的文章就介紹到這了,更多相關(guān)java跳轉(zhuǎn)到指定位置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jvm堆外內(nèi)存排查圖文舉例詳解

    jvm堆外內(nèi)存排查圖文舉例詳解

    Java應用程序通過直接方式從操作系統(tǒng)中申請的內(nèi)存,叫堆外內(nèi)存,這篇文章主要給大家介紹了關(guān)于jvm堆外內(nèi)存排查的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Java集合系列之ArrayList源碼分析

    Java集合系列之ArrayList源碼分析

    這篇文章主要為大家詳細介紹了Java集合系列之ArrayList源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • zookeeper+Springboot實現(xiàn)服務器動態(tài)上下線監(jiān)聽教程詳解

    zookeeper+Springboot實現(xiàn)服務器動態(tài)上下線監(jiān)聽教程詳解

    這篇文章主要介紹了zookeeper+Springboot實現(xiàn)服務器動態(tài)上下線監(jiān)聽,主要介紹了什么是服務器動態(tài)上下線監(jiān)聽及為什么要實現(xiàn)對服務器上下線的監(jiān)聽,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Java后端WebSocket的Tomcat實現(xiàn)

    Java后端WebSocket的Tomcat實現(xiàn)

    這篇文章主要介紹了Java后端WebSocket的Tomcat實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • idea 模板編程知識小結(jié)

    idea 模板編程知識小結(jié)

    這篇文章主要介紹了idea 模板編程的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java集合之CopyOnWriteArrayList詳解

    Java集合之CopyOnWriteArrayList詳解

    這篇文章主要介紹了Java集合之CopyOnWriteArrayList詳解,CopyOnWriteArrayList是ArrayList的線程安全版本,內(nèi)部也是通過數(shù)組實現(xiàn),每次對數(shù)組的修改都完全拷貝一份新的數(shù)組來修改,修改完了再替換掉老數(shù)組,這樣保證了只阻塞寫操作,需要的朋友可以參考下
    2023-12-12
  • Java實現(xiàn)文件壓縮為zip和解壓zip壓縮包

    Java實現(xiàn)文件壓縮為zip和解壓zip壓縮包

    這篇文章主要為大家介紹了Java如何實現(xiàn)將文件壓縮為zip以及解壓zip壓縮包,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下
    2022-06-06
  • Java小程序求圓的周長和面積實例

    Java小程序求圓的周長和面積實例

    這篇文章主要介紹了首先用蒙塔卡洛算法求圓周率近似值,然后根據(jù)此近似值輸出圓的周長和面積,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • 關(guān)于Springboot+gateway整合依賴并處理依賴沖突問題

    關(guān)于Springboot+gateway整合依賴并處理依賴沖突問題

    這篇文章主要介紹了Springboot+gateway整合依賴并處理依賴沖突問題,給大家提到了spring boot版本和spring cloud版本,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • java8 使用stream排序空字段排在前面或后面

    java8 使用stream排序空字段排在前面或后面

    這篇文章主要介紹了java8 使用stream排序空字段排在前面或后面的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論