可以给语句块加标号赋予它们名称,标号位于语句之前。标号只能被continue和break引用。格式如下:
label:statement
语句前只允许加一个标号,标号后面不能跟大括号。通过用break后加标号对处于标号中的语句进行控制。往往标号后是for.while.do-while等循环。
通过用标号,我们可以对外层循环进行控制
/*
* 输出 0 2
*/
for (int i = 0; i < 3; i++) {
if (i == 1) {
continue;
}
System.out.println(i);
}
/*
* i:0i:2j: 0 i:0i:2j:1 i:0i:2j:2
*/
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 3; i++) {
if (i == 1) {
continue;
}
System.out.print("i:" + i);
}
System.out.println("j:" + j);
}
a: // continue a 在此处运行结果为:i:0 i:0 i:0
for (int j = 0; j < 3; j++) {
b: // continue b 结果与无a标记一样
for (int i = 0; i < 3; i++) {
if (i == 1) {
continue a;
}
System.out.print("i:" + i);
}
}
// 运行结果为0
for (int i = 0; i < 3; i++) {
if (i == 1) {
break;
}
System.out.println(i);
}
/*
* i:0j:0 i:0j:1 i:0j:2
*/
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 3; i++) {
if (i == 1) {
break;
}
System.out.print("i:" + i);
}
System.out.println("j:" + j);
}
c: // break c,运行结果为:i:0
for (int j = 0; j < 3; j++) {
d: // break d 结果与无标记一样
for (int i = 0; i < 3; i++) {
if (i == 1) {
break c;
}
System.out.print("i:" + i);
}
System.out.println("j:" + j);
}