大家是否見過這種for回圈,在for回圈前加了個標記的:
outerLoop:
for (; ; ) {
for (; ; ) {
break outerLoop;
}
}
我之前有一次在公司業務代碼中見過有這種寫法的,沒在意,今天在看JDK執行緒池的代碼時,又看到ThreadPoolExecutor
的addWorker
方法中有這種寫法,于是就查了相關資料,也比較簡單,
總結下它的用法吧:
- 上面代碼中的
outerLoop
是一個標記外層for
回圈的標簽,它可以隨便命名, - 該標簽主要用于for回圈嵌套的情況,結合
break
和continue
跳轉到外層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回圈,執行邏輯為:
- 第一個
if
跳出當前內層回圈,會列印str.equals(1)
; - 第二個
if
執行外層for回圈的下一次回圈; - 最后一次回圈,
str
的值為3,跳出外層回圈,結束整個回圈,然后列印str.equals(3)
,
這種for加標簽的寫法確實很少見,學Java的時候都沒學這個東西,實際寫業務代碼的時候能避免就避免,內層回圈能抽就抽個方法,如果業務太復雜抽不了,這種寫法也不失為一種策略,
本文來自博客園,作者:xfcoding,歡迎轉載:https://www.cnblogs.com/cloudrich/p/17389613.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552104.html
標籤:其他
上一篇:訊息推送平臺的實時數倉?!flink消費kafka訊息入到hive
下一篇:返回列表