在循环语句中遇到这两个的时候总感觉有些迷糊,难以区分,下面给出示例来描述区别。
注意:break 直接跳出循环,执行循环后的代码;continue,结束本次循环,执行下次循环(即跳过本次循环) 循环嵌套中,外层循环执行一次,内层循环执行一遍。
(1) 单层循环
public class Test { public static void main(String[] args) { for(int i = 0; i <= 5; i++){ if(i == 3){ break; //结束循环 } System.out.println("i = " + i); } } } for(int i = 0 ; i <= 3; i++){ if(i == 2){ continue; } System.out.println("i = " + i); }(2)循环嵌套中使用,break语句结束其所在的当前循环,继续之后的代码以及外层循环。
for(int i = 0 ; i <= 3; i++){ for(int j = 1; j <= 5; j++){ if(j == 3){ break; } System.out.println("内层j: " + j); } System.out.println("外层i: " + i); } for(int i = 0; i <= 3; i++){ for(int j = 0 ; j <= 5; j++){ if(j == 3){ continue; } System.out.println("内层j: " + j); } System.out.println("外层i: " + i ); }(3)break语句不仅可以结束其所在的循环,还可以直接结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。Java中的标签就是一个紧跟英文冒号(:)的标识符。与其它语言不同的是,Java中的标签只有放在循环语句之前才有作用。
//外层循环,outer作为标识符 outer: for(int i = 0; i < 10; i++){ //内层循环 for(int j = 0; j < 5; j++){ System.out.println("i的值:" + i + " , j的值:" + j); if(j == 2){ //跳出outer标签所标记的循环 break outer; } } }(4)与break类似的,continue后也可紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句,重新开始下一次循环。
public static void main(String[] args) { //外层循环,outer作为标识符 outer: for(int i = 0; i < 10; i++){ //内层循环 for(int j = 0; j < 5; j++){ System.out.println("i的值:" + i + " , j的值:" + j); if(j == 2){ //跳过outer标签所标记的循环 continue outer; } } } }其实,这些示例要想明白最好使用debug模式来进行流程的查看,小小建议