在Java中,循環的邏輯常用break、continue、某一個變量值來控制。其實在java中還存在一個LOOP,用在break、continue之后,標記循環應該跳出到的位置。下面用幾個小demo來說明。
一、常用的break:跳出當前循環
import org.junit.Test; public class LoopDemo { @Test public void testNormalBreak() { for (int i = 0; i < 2; i++) { for (int j = 0; j < 4; j++) { System.out.println("i =" + i + "; j = " + j); if(j == 2) { break; } } } } }
運行結果如下

二、break后標記loop,跳出循環到指定位置
import org.junit.Test; public class LoopDemo { @Test public void testLoopBreak() { loop: for (int i = 0; i < 2; i++) { for (int j = 0; j < 4; j++) { System.out.println("i =" + i + "; j = " + j); if(j == 2) { break loop; } } } } }
運行結果如下

由break的兩個簡單的demo可以看出,雙重循環的場景下,break只是跳出當前循序;break后加上標記位,跳出循環到標記位指定的位置。
三、常用的continue:跳過本次循環
import org.junit.Test; public class LoopDemo { @Test public void testNormalContinue() { for (int i = 0; i < 2; i++) { for (int j = 0; j < 4; j++) { if(j == 2) { continue; } System.out.println("i =" + i + "; j = " + j); } } } }
運行結果如下

四、常用的continue:跳過本次循環
import org.junit.Test; public class LoopDemo { @Test public void testLoopContinue() { loop: for (int i = 0; i < 2; i++) { for (int j = 0; j < 4; j++) { if(j == 2) { continue loop; } System.out.println("i =" + i + "; j = " + j); } } } }
運行結果如下

由continue的兩個簡單的demo可以看出,雙重循環的場景下,continue只是跳過本次循環;continue后加上標記位,跳過循環到標記位指定的位置。
日常開發中通常用不到loop標記位的功能,官方給出的建議是盡量不要這樣使用,在jdk8中BufferedReader的readLine方法中看到了這樣的用法,特此記錄一下。
