1、用于switch语句当中,用于终止语句
2、用于跳出循环,此为不带标签的break语句,相当与goto的作用
e.g
1 while(i<j&&h<k){ 2 if(h<k) 3 { 4 .... 5 } 6 } 7 8 while(i<j){ 9 if(h>k) break; 10 }
在第一种写法中,对条件h<k进行了两次检测,而第二种写法,通过使用break跳出循环,减少了对同一条件的判别次数,避免了重复检测。
注意,在一系列循环嵌套中,break仅仅终止的是最里层的循环
试验代码如下:
1 for(int i=0;i<=3;i++){ 2 System.out.print("loop"+i+" "); 3 for(int j=0;j<10;j++){ 4 if(j==3){ 5 break; 6 } 7 System.out.print("j="+j+" "); 8 } 9 System.out.println(); 10 11 }
输出:
loop0 j=0 j=1 j=2
loop1 j=0 j=1 j=2
loop2 j=0 j=1 j=2
loop3 j=0 j=1 j=2
3、带标签的break语句
常常用于跳出多层嵌套
注意,在带标签的break语句中,标签必须放在希望跳出的最外层之前,并紧跟一个冒号
e.g
1 public class Test { 2 public static void main(String args[]){ 3 4 read_data: 5 while(1==1){ 6 if(1==1){ 7 System.out.println("1st"); 8 9 } 10 if(1==1){ 11 System.out.println("2nd"); 12 break read_data; 13 14 } 15 if(1==1){ 16 System.out.println("3rd"); 17 } 18 } 19 20 System.out.println("out of loop"); 21 22 23 } 24 }
输出:
1st
2nd
out of loop
e.g:
1 first:{ 2 System.out.println("first"); 3 second:{ 4 System.out.println("second"); 5 if(1==1){ 6 break first; 7 } 8 third:{ 9 System.out.println("third"); 10 } 11 } 12 System.out.println("will not be excuted"); 13 } 14 System.out.println("out of loop");
输出:
first
second
out of loop
对于带标签的break语句而言,只能跳转到包含break语句的那个块的标签上
下列代码是非法的:
1 first:if(1==1){ 2 System.out.print("................"); 3 } 4 second:if(1==1){ 5 System.out.print("................"); 6 break first; 7 }
补充 continue语句:
continue语句将控制转移到最内层循环的首部
while和 do while语句中continue语句直接转移到条件表达式,在for循环中,循环的检验条件被求值。
e.g:
1 public static void main(String args[]){ 2 3 int count; 4 int n; 5 int sum=0; 6 Scanner i=new Scanner(System.in); 7 for(count=1;count<=3;count++){ 8 System.out.println("enter a number,-1 to quit:"); 9 n=i.nextInt(); 10 if(n<0) 11 { 12 System.out.println("sum="+sum); 13 continue; 14 } 15 sum+=n; 16 System.out.println("sum="+sum); 17 } 18 19 }
输出:
enter a number,-1 to quit:
1
sum=1
enter a number,-1 to quit:
-1
sum=1
enter a number,-1 to quit:
1
sum=2
当输入为负时,continue语句直接跳到count++语句
continue语句也可以使用标签:
e.g
1 public static void main(String args[]) { 2 3 outer: for (int i=0; i<10; i++) { 4 5 for(int j=0; j<10; j++) { 6 7 if(j > i) { 8 9 System.out.println(); 10 11 continue outer; } 12 13 System.out.print(" " + (i * j)); }} 14 15 System.out.println(); 16 17 }
输出:
0
0 1
0 2 4
0 3 6 9
0 4 8 12 16
0 5 10 15 20 25
0 6 12 18 24 30 36
0 7 14 21 28 35 42 49
0 8 16 24 32 40 48 56 64
0 9 18 27 36 45 54 63 72 81
return语句:
return语句将程序控制返回到调用它的方法
e.g:
1 public static void main(String args[]) { 2 3 for(int i=0;i<10;i++){ 4 System.out.println("i="+i+" "); 5 for(int j=0;j<10;j++) 6 { 7 if(1==1){ 8 return; 9 } 10 System.out.println("j="+j+" "); 11 } 12 } 13 }
输出:
i=0
return 用来是正在执行的分支程序返回到它的调用方法上,在此,main函数的调用方法是java运行系统,所以执行到return;处,程序控制将被传递到它的调用者,所以后面的代码将都不被执行。