zoukankan      html  css  js  c++  java
  • break、continue关键字配合标签使用,实现跳转功能

    知识点:continue和break配合标签实现跳转功能

          尽管java中goto是一个保留字,但在语言中并未使用它,Java没有goto。然后java也可以完成一些类似于跳转的操作,那就是将break和continue配合标签一起使用

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

    lable1:

          在java中,标签起作用的唯一地方刚好是在迭代语句之前。“刚好之前”的意思表明,在标签和迭代之间置入任何语句都不好。而在迭代之前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者一个开关。这是由于break和continue关键字通常只中断当前循环,但若随同标签一起使用,它们就会中断循环,直到标签所在的地方:

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

    public class LabledFor{
    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;
    }
    }
    }
    }
    }
    }

    输出:

    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 outer语句,就没有办法从内部循环里跳出外部循环。这是由于break本身只能中断最内层的循环(continue也是同样如此)。

    下面的例子展示了带标签的break以及continue语句在while循环中的用法:

    public class LabledWhile{
    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

    同样的规则亦适用于while:

    1、一般的continue会退回最内层循环的开头(顶部),并继续执行

    2、带标签的continue会达到标签的位置,并重新进入紧接在那个标签后面的循环

    3、一般的break会中断并跳出当前循环

    4、带标签的break会中断并跳出标签所指的循环

    推荐一个自己业余时间开发的网盘搜索引擎,360盘搜www.360panso.com

  • 相关阅读:
    webpack常见的配置项
    详解javascript立即执行函数表达式(IIFE)
    javascript闭包—围观大神如何解释闭包
    hubilder打包+C#服务端个推服务实现
    vue学习笔记1-基本知识
    javascript中的字典
    javascript中获取元素尺寸
    php常见知识
    javascript中使用循环链表实现约瑟夫环问题
    ASP.NET Core 中的文件上传
  • 原文地址:https://www.cnblogs.com/eczhou/p/2285639.html
Copyright © 2011-2022 走看看