使用break语句可以跳过循环体的其余代码和循环的条件测试,强迫循环立即退出。当在某个循环内部遇到break语句时,循环终止,程序控制流转移至循环后面的语句。下面是一个简单示例:
public static void main(String[] args) throws java.io.IOException { int num = 100; //loop while i-squared is less than num for(int i = 0; i < num; i++) { if(i*i >= num) break; System.out.print(i+" "); } System.out.print("Loop complete"); }
输出如下所示:
0 1 2 3 4 5 6 7 8 9 Loop complete
如你所见,尽管这是一个用于运行从0到num的for循环,但是break语句会使循环在i的平方大于等于num时提前终止。
break语句可以用于Java的任何循环中,包括有意设置的无限循环。例如,下面的程序一直读取输入,直到用户键入字母q为止:
public static void main(String[] args) throws java.io.IOException { char ch; for(;;) { ch = (char)System.in.read(); if(ch == 'q') break; } System.out.println("done"); }
在嵌套循环中使用break语句时,结束的只是最内部的循环,例如:
public static void main(String[] args) throws java.io.IOException { for(int i=0;i<3;i++) { System.out.println("outer loop count:"+i); System.out.print("Inner loop count:"); int t = 0; while(t < 100) { if(t == 10) break; System.out.print(t+" "); t++; } System.out.println(""); } }
输出:
outer loop count:0 Inner loop count:0 1 2 3 4 5 6 7 8 9 outer loop count:1 Inner loop count:0 1 2 3 4 5 6 7 8 9 outer loop count:2 Inner loop count:0 1 2 3 4 5 6 7 8 9
如你所见,内部循环的break语句只能使内部循环终止,外部循环不受影响。
关于break语句还有两点需要记住,第一,一个循环可以出现多个break语句。然而要小心,太多的break语句会破坏代码结构。第二,结束switch语句的break语句只影响switch语句,而不影响外层的循环。