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