java 使用标签控制循环

本文介绍了Java中如何使用标签来控制程序流程,特别是在循环中的应用。标签通常与break和continue一起使用,以实现从一个循环跳到另一个循环或直接退出循环。举例说明了在for和while循环中,带标签的break和continue如何影响循环的执行,包括普通break和continue的常规行为以及带标签的版本如何中断指定的循环。
摘要由CSDN通过智能技术生成

java中,我们通常熟悉的是通过break和continue两个关键字来控制程序的走向,当需要程序从一个地方跳到另一个地方时,就需要要通过标签来实现,下面通过一个例子来讲述标签的使用方式。
标签是后面跟着冒号的标识符,就像下面这样:

label:

java中,标签起作用的最好的地方是放在迭代语句之前,在标签和迭代之间置入任何语句都不好。在迭代前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者一个开关。
将break和continue与标签一起使用,它们就会中断循环,直到标签所在的地方。

label1:
outer-iteration{
      inner-iteration{
           break; (1)
           continue; (2)
           continue label1; (3)
           break label; (4)
  }
}
在(1)中,break中断内部迭代,回到外部迭代。
在(2)中,continue使执行点移回内部迭代的起始处。
在(3)中,continue label1 同时中断内部迭代以及外部迭代,直接转到label1处,随后,它实际上是继续迭代过程,但是是从外部迭代开始。
在(4)中,break label1 也会中断所有迭代,并回到label1处,但并不重新进入迭代,也就是说,它是完全终止了两个迭代。
public class MainTest {

    public static void main(String[] args) {
        int i = 0;
        outer:
        for(;true;){
            inner:
            for(;i<10;i++){
                System.out.println("i="+i);
                if(i == 2){
                    System.out.println("continue");
                    continue ;
                }
                if(i == 3){
                    System.out.println("break");
                    i++;
                    break ;
                }
                if(i == 7){
                    System.out.println("continue outer");
                    i++;
                    continue outer;
                }
                if(i == 8){
                    System.out.println("break outer");
                    break outer;
                }
                for(int k =0; k<5;k++){
                    if(k==3){
                        System.out.println("continue inner");
                        continue inner;
                    }
                }
            }
        }
    }
}
//##########打印输出###########:
i=0
continue inner
i=1
continue inner
i=2
continue
i=3
break
i=4
continue inner
i=5
continue inner
i=6
continue inner
i=7
continue outer
i=8
break outer

注意:
break会中断for循环,而且在抵达for循环的末尾之前,递增表达式不会执行。由于break跳过了递增表达式,所以i==3的情况下直接对i执行递增运算。
在i==7的情况下,continue outer语句会跳到循环顶部,而且也会跳过递增,所以这里也对i直接递增。

下面为带标签的break和continue在while循环中的用法:

public class LabelWhile {

    public static void main(String[] args) {
        int i = 0;
        outer:
        while(true){
            System.out.println("Outer while loop");
            while(true){
                i++;
                System.out.println("i="+i);
                if(i==1){
                    System.out.println("continue");
                    continue ;
                }
                if(i == 3){
                    System.out.println("continue outer");
                    continue outer;
                }
                if(i == 5){
                    System.out.println("break");
                    break ;
                }
                if(i==7){
                    System.out.println("break outer");
                    break outer;
                }
            }
        }
    }

}
//#########打印输出##########
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

1)一般的continue会退回最内层循环的开头(顶部),并继续执行。
2)带标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环。
3)一般的break会中断并跳出当前循环。
4)带标签的break会中断并跳出标签所指的循环。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值