break、continue关键字配合标签使用,实现跳转功能

来源:互联网 发布:itunes管理iphone软件 编辑:程序博客网 时间:2024/06/10 16:12

知识点: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会中断并跳出标签所指的循环

0 0
原创粉丝点击