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");不会被执行。