4.4.2 使用continue结束本次循环
continue的功能和break有点类似,区别是continue只是中止本次循环,接着开始下一次循环。而break则是完全终止循环。可以理解为continue的作用是略过当次循环中剩下的语句,重新开始新的循环。例如如下程序示范了continue的用法:
程序清单:codes/04/4-4/TestContinue.java public class TestContinue { public static void main(String[] args) { //一个简单的for循环 for (int i = 0; i < 3 ; i++ ) { System.out.println("i的值是" + i); if (i == 1) { //略过本次循环的剩下语句 continue; } System.out.println("continue后的输出语句"); } } } |
运行上面程序,看到如下运行结果:
i的值是0 continue后的输出语句 i的值是1 i的值是2 continue后的输出语句 |
从上面运行结果来看,当i等于1时,程序没有输出“continue后的输出语句”字符串,因为程序执行到continue时,忽略了当次循环中continue语句后的代码。从这个意义上来看,如果把一个continue语句放在单次循环的最后一行,这个continue语句是没有任何意义的——因为它仅仅忽略了一片空白,没有忽略任何程序语句。
与break类似的,continue也可以紧跟一个标签,用于直接结束标签所标识循环的当次循环,重新开始下一次循环。例如下面代码:
程序清单:codes/04/4-4/TestContinue2.java public class TestContinue2 { public static void main(String[] args) { //外层循环 outer: for (int i = 0 ; i < 5 ; i++ ) { //内层循环 for (int j = 0; j < 3 ; j++ ) { System.out.println("i的值为:" + i + " j的值为:" + j); if (j == 1) { //跳出outer标签所指定的循环。 continue outer; } } } } } |
运行上面程序可以看到,循环变量的值将无法超过1,因为每当j等于1时候,continue outer语句就结束了外层循环的当次循环,直接开始下一次循环,内层循环没有机会执行完成。
与break类似的,continue后的标签也必须是一个有效标签,即这个标签通常应该放在continue所在循环的外层循环之前定义。