Java中的break和continue 区别

break可以离开当前switch、for、while、do while的程序块,并前进至程序块后下一条语句,在switch中主要用来中断下一个case的比较。在for、while与do while中,主要用于中断目前的循环执行。

注意:循环嵌套时只会跳出带break那层的循环,例如

 1 class test{
 2     public static void main(String[] args) {
 3             for (int i = 0; i < 3; i++) {
 4                 for (int j = 0; j < 4; j++) {
 5                     if (j == 3) {
 6                         break;
 7                     }
 8                     System.out.println("j" + j);
 9                 }
10                 System.out.println("i" + i);
11             }
12 
13     }
14 }

只会跳出内层循环,j=3那层没有,结果如下:

 1 j0
 2 j1
 3 j2
 4 i0
 5 j0
 6 j1
 7 j2
 8 i1
 9 j0
10 j1
11 j2
12 i2

continue的作用与break类似,主要用于循环,所不同的是break会结束程序块的执行,而continue只会结束其之后程序块的语句,并跳回循环程序块的开头继续下一个循环,而不是离开循环,这个一般比较好理解。

 

break与continue还可以配合标签使用,例如本来break只会离开for循环,设定标签与程序块,则可以离开整个程序块。下面来进行示范:

 1 public class BreakTest {
 2     public static void main(String[] args) {
 3         back : {
 4             for(int i = 0; i < 10; i++) {
 5                 if(i == 9) {
 6                     System.out.println("break");
 7                      break back;
 8                 }
 9             }
10             System.out.println("test");
11         }
12     }
13 }

程序的执行结果会显示break;back是个标签,当break back;时,返回至back标签处,之后整个back程序块不执行而跳过,所以这个程序System.out.println("test");不会被执行。

事实上continue也有类似的用法,只不过标签只能设定在for之前,看下面的例子:

 1 public class ContinueTest {
 2 
 3     public static void main(String[] args) {
 4         back1:
 5         for(int i = 0; i < 10; i++){
 6             back2:
 7             for(int j = 0; j < 10; j++) {
 8                 if(j == 9) {
 9                     continue back1;
10                 }
11             }
12             System.out.println("test");
13         }
14     }
15 }

continue配合标签,可以自由地跳至任何一层for循环,您可以试试continue back1与continue back2的不同。设定back1时,System.out.println("test");不会被执行。

posted @ 2020-06-24 22:00  轻风青枫  阅读(2167)  评论(0编辑  收藏  举报