美文网首页
java的"goto"

java的"goto"

作者: 挨踢小能手 | 来源:发表于2016-07-14 21:41 被阅读995次

    java中也有类似goto的写法,这与break和continue有关,但不是一个跳转,而是中断迭代的一种方法。标签是后面跟有冒号的标示符如下:
    label:
    下面是标签用于for循环的例子:

    public class LabeledFor {
    
        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;  //break会中断for循环,在末尾之前 i++不会执行,所以要手动i++
                    }
                    if (i == 7){
                        System.out.println("continue outer");
                        i++;
                        continue outer;  //跳出循环顶部,也不会执行i++
                    }
                    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
    

    continue和break的规则如下:

    • 一般的continue会退回内层循环的开头,并继续执行。
    • 带标签的continue会到达标签的位置,并重新进入紧接在标签后的循环。
    • 一般的break会中断并跳出当前循环。
    • 带标签的break会中断并跳出标签所指的循环。

    使用标签的唯一理由是有循环嵌套存在,想要从多层嵌套中跳出。

    相关文章

      网友评论

          本文标题:java的"goto"

          本文链接:https://www.haomeiwen.com/subject/vkxyjttx.html