您的位置:首页 > 产品设计 > UI/UE

带标签的break和continue语句

2014-03-06 19:34 405 查看
   尽管无标签的break和continue语句非常常见,但使用标签的语句可以使程序更加紧凑,当然毫无疑问降低了程序的可读性。简单文绉绉地说下无标签的两者是如何工作的:break是退出最内层的循环结构,并跳转到该循环块之外的下一句代码执行。而continue是通常与条件配合使用,如果该循环条件满足,则会继续同一循环块内的下一次迭代。注意红色部分。如果对于break来说,要退出好几层循环,那怎么办?对于continue来说,要执行几层循环体的下一次迭代,怎么实现?请看下边关于break例子:

public class BreakLabel {

   public static void main(String[] args) {

      boolean isTrue = true;

      outer:

         for(int i=0; i<5; i++){

           for(int j=0; j<30000; j++){

               System.out.println("hello");

               break outer;   //如果没有标签,那么outer loop这句语名将被输出。正因为有标签,直接跳出两层循环

            }

            System.out.println("outer loop");

         }

      System.out.println("Good-bye");

   }

}

      毫无疑问,标识必须符合java命名规则,另外,标签必须直接位于被标识的循环之前,后边加冒号,基本上说明它是一个标签,与下边的紧接的这一个语句同义。而break 标签名;则来用响应标签。下例是continue使用标签的情况:

public class ContinueLabel {

   public static void main(String[] args) {

      outer:

         for(int i=0; i<5; i++){

            System.out.println("begin outer loop");     //而因为continue直接退到外层这句话被反复执行到

            for(int j =0; j<3; j++){

               System.out.println("Hello");

               continue outer;  

            }

            System.out.println("end outer loop~~~~~~~~~~~~``");  //因为标签这句话,不会执行到。

         }

      System.out.println("goodbye");

   }

}

     使用了标签以后,被看成一个大的循环体。break是刚性的,就象洪水冲上了堤坝一样,一下子就到此为止,有了标签,它更加胡作非为,影响力到标签所达之处。 如果大家愿意的话,看看如下代码能输出什么:

public class TestLabel {

    public static void main(String[] args) {

        int counter = 0;

        ll: for (int i = 0; i < 10; i++) {

            gg: for (int j = 0; j < 10; j++) {

                if (j > i)

                    break gg;

                if (j == i) {

                    counter++;   //上边的条件能保证这个ll这个循环能执行结束,每一次循环都能保证counter,自增一次,除了第一次进入gg循环,i=0而j=1;被break出gg,没有执行counter++

                    continue ll;       // A labeled continue works only with loops.

                }

            }

        }

        System.out.println(counter);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: