您的位置:首页 > 编程语言 > Java开发

Java Label

2016-06-04 11:31 501 查看
在Java中“{”和“}”组成一个代码块(code block),如我们最常用到的static代码块,而每个代码块都可以用一个Label,Label不是Java中的关键字,而是一个任意的标识符。由于我们一般不怎么用Label,此时难免会有人问:Label到底有什么用呢?大家不要急,且听我慢慢道来。

试想一个这样的场景:有一个两重循环,但是当在内层循环中找到了满足的条件,就停止两重循环就退出执行。不难想到肯定会用break关键字,但是如果仅仅是break,那么Java默认只会退出当前循环,即内层循环。如:

for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
System.out.println("Even number: " + i + ", break from INNER label");
if(i == 1){
break;
}
}
}

输出:
Even number: 0, break from INNER label
Even number: 0, break from INNER label
Even number: 0, break from INNER label
Even number: 0, break from INNER label
Even number: 1, break from INNER label
Even number: 2, break from INNER label
Even number: 2, break from INNER label
Even number: 2, break from INNER label
Even number: 2, break from INNER label
Even number: 3, break from INNER label
Even number: 3, break from INNER label
Even number: 3, break from INNER label
Even number: 3, break from INNER label

此时,根本没有达到我们想要的结果,但是当我们加上Label就可以很容易实现了:
//Outer loop checks if number is multiple of 2
OUTER: //outer label
for(int i = 0; i < 4; i++){
INNER: //inter label
for(int j = 0; j < 4; j++){
System.out.println("Even number: " + i + ", break from INNER label");
if(i == 1){
break OUTER;
}
}
}

输出:
Even number: 0, break from INNER label
Even number: 0, break from INNER label
Even number: 0, break from INNER label
Even number: 0, break from INNER label
Even number: 1, break from INNER label

其实,细心的读者可能会想到continue关键字也应该有类似的功能。如下,我们在遇到偶数时,就continue外层循环;遇到奇数时,就break内层循环:
//Outer loop checks if number is multiple of 2
OUTER: //outer label
for(int i = 0; i < 4; i++){
if(i % 2 == 0){
System.out.println("Odd number: " + i + ", continue from OUTER label");
continue OUTER;
}

INNER: //inter label
for(int j = 0; j < 4; j++){
System.out.println("Even number: " + i + ", break from INNER label");
// if(i == 1){
// break OUTER;
// }
break INNER;
}
}

输出:
Odd number: 0, continue from OUTER label
Even number: 1, break from INNER label
Odd number: 2, continue from OUTER label
Even number: 3, break from INNER label

当然,如最开始所说Label是标志“{”和“}”组成的代码块,那么就意味着不仅而已用于标识循环,if和普通代码也可以标识:
boolean flag = true;
JUDGE:
if(flag){
System.out.println("It is " + flag);
}

CODE:{
int a = 4;
int b = 5;
System.out.println(a * b);
}
但是,Label通常是和break和continue一起使用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java break continue Label