@Test
public void continueLbaelTest() {
label0:
System.out.println("label1");
label1:
for (int i = 0; i < 4; i++) {
System.out.println("label2 ");
label2:
for (int j = 0; j < 4; j++) {
System.out.println("label3 ");
label3:
for (int k = 0; k < 4; k++) {
System.out.println("label4 ");
label4:
if (j == k) {
continue label2;
}
System.out.println("i = " + i + " , j = " + j + " , k = " + k);
}
}
}
}
@Test
public void breakLabelTest(){
label0:
System.out.println("label1");
label1:
for (int i = 0; i < 4; i++) {
System.out.println("label2 ");
label2:
for (int j = 0; j < 4; j++) {
System.out.println("label3 ");
label3:
for (int k = 0; k < 4; k++) {
System.out.println("label4 ");
label4:
if (j == k) {
break label4;
}
System.out.println("i = " + i + " , j = " + j + " , k = " + k);
}
}
}
}
对于continue来说,label只能位于每条循环语句之前,且紧挨着。例如:continueLbaelTest()中的label1、label2、label3都Ok,但是label0和label4是违背语法的。
对于break来说,label位于每条循环语句之前,且紧挨着,但使用起来比continue宽松一些。例如:breakLbaelTest()中的label1、label2、label3、label4都Ok,但是label0是违背语法的。且如果使用break label4; 那么等价于 注释掉break label4;语句。