JAVA - 带标签的break和continue

不带标签的break和continue只能中断最内层循环|退回最内层循环的顶部,就没有办法从内部循环里跳出外部循环。

尽管JAVAgoto是一个保留字,但在JAVA中并未使用它,这种设计提高了程序流程控制的可读性,但是也有不好的地方,它降低了程序流程控制的灵活性其实,JAVA也可以完成一些类似于跳转的操作,那就是将break和continue配合标签一起使用

标签是后面跟有冒号的标识符,就像下面这样:

label:

JAVA中,标签起作用的主要地方是在循环语句之前。“之前”的意思在标签和循环语句之间置入任何语句。而在循环语句之前设置标签的唯一理由是:在多重嵌套循环中方便退出循环。这是由于break和continue关键字通常只中断当前循环,但若随同标签一起使用,它们就会中断循环,直到标签所在的地方:

下面是标签用于for循环的例子:

public static void main(String[] args){

        int i = 0;
        outer:
            for(;true;){
                inner:
                    for(;i<10;i++){
                        System.out.println("i="+i);
                        /**在抵达for循环的末尾之前,递增表达式会执行*/
                        if(i==2){
                            System.out.println("continue");
                            continue;
                        }
                        /**break会中断for循环,而且在抵达for循环的末尾之前,递增表达式不会执行。由于
                         * break跳过了增量表达式,所以在此处直接对i进行递增操作*/
                        if(i==3){
                            System.out.println("break");
                            i++;
                            break;
                        }
                        /**continue outer语句会跳到循环顶部,并且跳过inner标签下的for循环的递增,
                         * 所以这里也对i直接递增*/
                        if(i==7){
                            System.out.println("continue outer");
                            i++;
                            continue outer;
                        }
                        if(i==8){
                            System.out.println("break outer");
                            break outer;
                        }
                        /**在抵达inner标签下的for循环末尾之前,inner下的for循环的递增表达式会执行*/
                        for(int k = 0;k< 5;k++){
                            if(k==3){
                                System.out.println("continue inner");
                                continue inner;
                            }
                        }
                    }
            }

事实上,可以将带标签的break应用到任何语句中,可以应用到if语句或者块语句中,只需将标签放在想要跳到的语句块之前并与break配合使用即可。

注意:带标签的break只能跳出语句块,但不能跳入语句块。

public static void main(String[] args){
		label:
			if(true) {
				System.out.println("Inside IF");
				break label;
			}
		System.out.println("Outside IF");
	}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值