Java Label的使用

在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一起使用的。

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值