• java之break解析


    java中,break语句有3种作用。

    第一,在switch语句中,它被用来终止一个语句序列。

    第二,它能被用来退出一个循环。(一系列的循环嵌套时,只跳出做里面的一层)

    第三,它能作为一种先进goto 语句来使用。

    下面对最后 2种用法进行解释。 

    class BreakLoop { 

    public static void main(String args[]) { 
    for(int i=0; i<100; i++) { 
    if(i == 10) break; // terminate loop if i is 10 
    System.out.println("i: " + i); 

    System.out.println("Loop complete."); 

    结果:

    i: 0 
    i: 1 
    i: 2 
    i: 3 
    i: 4 
    i: 5 
    i: 6 
    i: 7 
    i: 8 
    i: 9 
    Loop complete.

    class BreakLoop3 { 

    public static void main(String args[]) { 

    for(int i=0; i<3; i++) { 
    System.out.print("Pass " + i + ": "); 
    for(int j=0; j<100; j++) { 
    if(j == 10) break; // terminate loop if j is 10 
    System.out.print(j + " "); 

    System.out.println(); 

    System.out.println("Loops complete."); 

    结果:

    Pass 0: 0 1 2 3 4 5 6 7 8 9 
    Pass 1: 0 1 2 3 4 5 6 7 8 9 
    Pass 2: 0 1 2 3 4 5 6 7 8 9 
    Loops complete.  

    从中可以看出,在内部循环中的break语句仅仅终止了该循环,外部的循环不受影响。

    关于break ,在这里要记住两点。

    首先,一个循环中可以有一个以上的break 语句。

    其次,switch语句中的break仅仅影响该switch 语句,而不会影响其中的任何循环。

    标签break语句的通用格式如下所示:

    break label;

    标签label是标识代码块的标签。当这种形式的break执行时,控制被传递出指定的代码快。被加标签的代码必须包围break语句。

    要指定一个代码块,在其开头加一个标签即可。标签(label )可以是任何合法有效的Java 标识符后跟一个冒号。一旦你给一个块加上标签后,你就可以使用这个标签作为break 语句的对象了。这样做会使执行在加标签的块的结尾重新开始class Break { public static void main(String

    class Break{

    public static void main(String[] args)

    { boolean t = true; 

    first: { 

      second: { 

        third: {  

           System.out.println("Before the break.");

          if(t) break second;

          // break out of second blockSystem.out.println("This won't execute");

            } //third

      System.out.println("This won't execute");

          }//second

        System.out.println("This is after second block.");

        } //first
    }
    }

    结果:

    Before the break.
    This is after second block.  

    标签break 语句的一个最普遍的用法是退出循环嵌套。例如,下面的程序中,外层的循环只执行了一次:

    class BreakLoop4 {
    public static void main(String args[]) {
    outer: for(int i=0; i<3; i++) {
    System.out.print("Pass " + i + ": ");
    for(int j=0; j<100; j++) {
    if(j == 10) break outer; // exit both loops
    System.out.print(j + " ");
    }
    System.out.println("This will not print");
    }
    System.out.println("Loops complete.");
    }
    }

    结果:

     Pass 0: 0 1 2 3 4 5 6 7 8 9 Loops complete.

    记住如果一个标签不在包围break的块中定义,你就不能break 到该标签。例如,下面的程序就是非法的,且不会被编译:

    class BreakErr {
    public static void main(String args[]) {
    one: for(int i=0; i<3; i++) {
    System.out.print("Pass " + i + ": ");
    }
    for(int j=0; j<100; j++) {
    if(j == 10) break one; // WRONG
    System.out.print(j + " ");
    }
    }

    因为标签为one的循环没有包围break 语句,所以不能将控制传递到该块。

  • 相关阅读:
    luogu P1162 填涂颜色 x
    【説明する】素数
    codevs 4064 组合 x
    codevs 2039 骑马修栅栏 USACO x
    codevs 2038 香甜的黄油x+luogu P1828 x
    [HIHO1079]离散化(线段树、染色)
    [HIHO1196]高斯消元·二(高斯消元、枚举自由变元)
    hihoCoder太阁最新面经算法竞赛17
    [POJ1753]Flip Game(异或方程组,高斯消元,枚举自由变量)
    [POJ1681]Painter's Problem(高斯消元,异或方程组,状压枚举)
  • 原文地址:https://www.cnblogs.com/xleer/p/5367213.html
Copyright © 2020-2023  润新知