Java循环语句中的标签使用

关于在循环体中使用标签跳出内层循环的问题,不知道这个语法糖是JDK几以后加入的,这个语法平时几乎很少遇到,应为一般情况下满足条件后终止循环的关键字 通常使用break结束当前循环体,continue用来跳过本次的循环继续其后的当前循环体内的循环,return则直接跳出外层的循环体结束循环。而标签这个东西我还是最近在《疯狂的JAVA讲义》中看到的,编程开发嘛光看不练假把式。

public class Main {

    public static void main(String[] args) {
        out:
        for (int i = 0 ; i < 10 ; i ++ ){
            System.out.println("\ti:".concat(String.valueOf(i)));
            for (int j = 0; j <5;j++){
                if (j == 2){
                    continue out;
                }
                System.out.println("\t\tj:".concat(String.valueOf(j)));

            }

        } 
    }
}

执行结果:

i:0
        j:0
        j:1
    i:1
        j:0
        j:1
    i:2
        j:0
        j:1
    i:3
        j:0
        j:1
    i:4
        j:0
        j:1
    i:5
        j:0
        j:1
    i:6
        j:0
        j:1
    i:7
        j:0
        j:1
    i:8
        j:0
        j:1
    i:9
        j:0
        j:1

在内层循环中每到第三个元素时就会跳出当前循环体回到标签out 指定的位置。
语法糖说完后有两个注意事项:
1.编写异常:

public class Main {
    public static void main(String[] args) {
        out:
        System.out.println("\ti:".concat("a");
        for (int i = 0 ; i < 10 ; i ++ ){
            System.out.println("\ti:".concat(String.valueOf(i)));

            for (int j = 0; j <5;j++){
                if (j == 2){
                    continue out;
                }
                System.out.println("\t\tj:".concat(String.valueOf(j)));

            }

        }
    }
}

我们指定的标签必需紧邻循环体,中间不能加任何的语句,下面的写法会在编译的时候报书写错误,IDE的语法检查也会标记,但是快速无法自动修复问题和给出良好的建议,所以大家尽量避免

public class Main {
    public static void main(String[] args) {
        out:
        System.out.println("\ti:".concat("a"));
        for (int i = 0 ; i < 10 ; i ++ ){
            System.out.println("\ti:".concat(String.valueOf(i)));

            for (int j = 0; j <5;j++){
                if (j == 2){
                    continue out;
                }
                System.out.println("\t\tj:".concat(String.valueOf(j)));

            }

        }
    }
}

2.一些无意义的使用场景,

  • 情景一:标记条件位于循环体最后一个执行元素,就例如示例代码中的内层循环,如果把循环控制条件由j<5改为j<3则其实当碰到out标签时本来就应该结束的当前的循环,所以没有任何意义;
  • 情景二:就是非多层循环嵌套时定义不定义这个标签显然是毫无意义的。

你可能感兴趣的:(Java循环语句中的标签使用)