Java for迴圈標簽跳轉到指定位置

来源:https://www.cnblogs.com/cloudrich/archive/2023/05/10/17389613.html
-Advertisement-
Play Games

大家是否見過這種for迴圈,在for迴圈前加了個標記的: outerLoop: for (; ; ) { for (; ; ) { break outerLoop; } } 我之前有一次在公司業務代碼中見過有這種寫法的,沒在意,今天在看JDK線程池的代碼時,又看到ThreadPoolExecutor ...


大家是否見過這種for迴圈,在for迴圈前加了個標記的:

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

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

總結下它的用法吧:

  1. 上面代碼中的outerLoop是一個標記外層for迴圈的標簽,它可以隨便命名。
  2. 該標簽主要用於for迴圈嵌套的情況,結合breakcontinue跳轉到外層for迴圈;

我們知道,break的作用是跳出當前迴圈,continue的作用是結束本次迴圈,繼續下次迴圈。如果有雙層for迴圈,在內層的for迴圈中,想直接跳出所有迴圈,使用break outerLoop就可以實現;而continue outerLoop的作用是結束外層的本次迴圈,繼續外層的下一次迴圈。

舉個例子:

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迴圈,執行邏輯為:

  1. 第一個if跳出當前內層迴圈,會列印str.equals(1);
  2. 第二個if執行外層for迴圈的下一次迴圈;
  3. 最後一次迴圈,str的值為3,跳出外層迴圈,結束整個迴圈,然後列印str.equals(3)

這種for加標簽的寫法確實很少見,學Java的時候都沒學這個東西,實際寫業務代碼的時候能避免就避免,內層迴圈能抽就抽個方法。如果業務太複雜抽不了,這種寫法也不失為一種策略。

本文來自博客園,作者:xfcoding,歡迎轉載:https://www.cnblogs.com/cloudrich/p/17389613.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 源碼地址:https://ext.dcloud.net.cn/plugin?id=12272 ...
  • 😊在Nuxt3.0項目中用到了可視化圖表📊,於是我用了EChart可視化圖表庫。但是在官網我沒有找到針對在Nuxt3.0中使用EChart的方法,於是在這裡記錄我的引入EChart並簡單使用的步驟。需要聲明的是,本文只針對在Nuxt3.0項目中使用EChart.js庫的可視化圖表進行講解,不針對 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 先上效果 前言 最近在學Three.js.,對著文檔看了一周多,正好趕上碼上掘金的活動,就順便寫了一個小demo,手搓一個羅盤特效。 太極 先來看一下太極的實現方式,這裡我們使用CircleGeometry,將其分解開來可以看出是由圓形和 ...
  • 我們是袋鼠雲數棧 UED 團隊,致力於打造優秀的一站式數據中台產品。我們始終保持工匠精神,探索前端道路,為社區積累並傳播經驗價值。。 本文作者:奇銘(掘金) 需求背景 前段時間,離線計算產品接到改造數據同步表單的需求。 一方面,數據同步模塊的代碼可讀性和可維護性比較差,相對應的,在數據同步模塊開發新 ...
  • <meta> 標簽是 HTML 中用於描述網頁元信息的元素。它位於 <head> 部分,不會顯示在頁面內容中,但對於瀏覽器、搜索引擎等具有重要作用。主要作用有:定義文檔的字元編碼、提供網頁的描述信息、關鍵詞、作者、視口設置等,這些信息有助於搜索引擎理解和索引網頁內容。 <meta> 標簽的主要屬性有 ...
  • 當前,前端對二進位數據有許多的API可以使用,這豐富了前端對文件數據的處理能力,有了這些能力,就能夠對圖片等文件的數據進行各種處理。 本文將著重介紹一些前端二進位數據處理相關的API知識,如Blob、File、FileReader、ArrayBuffer、TypeArray、DataView等等。 ...
  • 模式動機 原型模式(Prototype Pattern)結構較為簡單,它是一種特殊的創建型模式,當需要創建大量相同或者相似對象時,可以通過對一個已有對象的複製獲取更多對象。Java語言提供了較為簡單的原型模式解決方案,只需要創建一個原型對象,然後通過在類中定義的克隆方法複製自己。該模式應用較為廣泛, ...
  • 開發環境 以下是我的開發環境 JDK 1.8 Maven 3.6.3 IDEA 2019(2019 無所畏懼,即使現在已經 2023 年了哈哈哈) 使用 Maven 的方式創建 Spring Boot 項目 下麵的內容可能會因 IDEA 版本不同,而有些選項不同,但是大同小異。 1. 打開 IDEA ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...