在任何迭代语句的主体部分,都可以使用 break 和 continue 来控制循环流程。break 会直接退出循环,不再执行循环里的剩余语句。continue 则会停止执行当前的迭代,然后退回循环开始位置执行下一次迭代。
    下面是一个在 for 和 while 循环中使用 break 和 continue 的例子:

    1. // control/BreakAndContinue.java
    2. // break和continue关键字
    3. import static onjava.Range.*;
    4. public class BreakAndContinue {
    5. public static void main(String[] args) {
    6. for(int i = 0; i < 100; i++) { // [1]
    7. if(i == 74) break; // 跳出for循环
    8. if(i % 9 != 0) continue; // 下次迭代
    9. System.out.print(i + " ");
    10. }
    11. System.out.println();
    12. // 使用for-in:
    13. for(int i : range(100)) { // [2]
    14. if(i == 74) break; // 跳出for循环
    15. if(i % 9 != 0) continue; // 下次迭代
    16. System.out.print(i + " ");
    17. }
    18. System.out.println();
    19. int i = 0;
    20. // 一个“无限循环”:
    21. while(true) { // [3]
    22. i++;
    23. int j = i * 27;
    24. if(j == 1269) break; // 跳出循环
    25. if(i % 10 != 0) continue; // 调到循环顶部
    26. System.out.print(i + " ");
    27. }
    28. }
    29. }
    30. /* 输出:
    31. 0 9 18 27 36 45 54 63 72
    32. 0 9 18 27 36 45 54 63 72
    33. 10 20 30 40
    34. */

    [1] i 的值永远不会达到 100,这是因为一旦 i 等于 74,break 语句就会中断循环。通常只有在不知道中断条件何时发生时,才会这样使用 break。只要 i 不能被 9 整除,continue 语句就会返回到循环的开头再继续执行(因此这会让 i 值增加)。如果能够整除,值就被打印出来。
    [2] for-in 语句产生了相同的结果。
    [3] 这个 “无限” 的 while 循环会一直执行,因为它的条件表达式结果总是 true,不过 break 语句会中止循环。注意代码里的 continue 语句只是把执行流程移到了循环的开头,而没有执行 continue 之后的任何内容,因此 i 值只有被 10 整除时才会打印。输出结果中之所以显示 0,是因为 0%9 等于 0。
    无限循环的另一种形式是 for(;;)。编译器同等对待 while(true) 和 for(;;),所以具体选用哪个取决于你的编程习惯。