您的位置:首页 > 编程语言 > Java开发

java之break解析

2016-04-08 11:12 507 查看
在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 语句,所以不能将控制传递到该块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: