参考来自<< Thinking in java >> 一书
让我们看一个例子:
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
System.out.println("i = " + i);
for (int j = 0; j < 3; j++) {
if (j == 1) {
continue;
}
System.out.println("j = " + j);
}
}
}
//output:
// i = 0 j = 0 j = 2
//i = 1 j = 0 j = 2
//i = 2 j = 0 j = 2
//i = 3 j = 0 j = 2
标签是后面跟有冒号的标识符
label:
同上如果使用了标签,那么此时的输出是什么呢?
public static void main(String[] args) {
found: for (int i = 0; i < 4; i++) {
System.out.println("i = " + i);
for (int j = 0; j < 3; j++) {
if (j == 1) {
continue found;
}
System.out.println("j = " + j);
}
}
}
//output:
//i = 0 j = 0
// i = 1 j = 0
// i = 2 j = 0
//i = 3 j = 0
我们看到了在 continue执行处直接移动到了外层循环标签处,执行下一次循环.同理break的执行结果也类似.
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
System.out.println("i = " + i);
for (int j = 0; j < 3; j++) {
if (j == 1) {
break;
}
System.out.println("j = " + j);
}
}
}
//output:
//i = 0 j = 0
//i = 1 j = 0
// i = 2 j = 0
//i = 3 j = 0
//使用了标签的例子
public static void main(String[] args) {
found:for (int i = 0; i < 4; i++) {
System.out.println("i = " + i);
for (int j = 0; j < 3; j++) {
if (j == 1) {
break found;
}
System.out.println("j = " + j);
}
}
}
//output
// i = 0 j=0
我们这里引用一个<< Thinking in Java >>里面的例子来看看在while循环里面的应用:
public static void main(String[] args) {
int i = 0;
outer: while (true) {
print("Outer while loop");
while (true) {
i++;
print("i = " + i);
if (i == 1) {
print("continue");
continue;
}
if (i == 3) {
print("continue outer");
continue outer;
}
if (i == 5) {
print("break");
break;
}
if (i == 7) {
print("break outer");
break outer;
}
}
}
}
/*
* Output: Outer while loop i = 1 continue i = 2 i = 3 continue outer Outer
* while loop i = 4 i = 5 break Outer while loop i = 6 i = 7 break outer
*/// :~
总结:
- 在Java里面需要使用标签的理由就是因为有循环嵌套的存在,而且想从多层嵌套中break或continue.
- 标签起作用的唯一地方刚好是在迭代语句之前."刚好之前"的意思表明,在标签和迭代之间置入任何语句都不好.