在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方法中看到了这样的用法,特此记录一下。