break 和 continue
-
break 在任何循环语句的主体部分,均可用 break 控制循环的流程。break 用于强行退出循环,不执行循环中剩余的语句。(break 语句在 switch 语句中使用)
代码示例:
int i = 0; while (i < 100) { i ++; System.out.println(i); if (i == 3) { break;// 跳出循环 } } // 循环外的代码依旧会执行 System.out.println("循环外的代码依旧会执行");
运行结果:
1 2 3 循环外的代码依旧会执行
-
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
代码示例:
int i = 0;
while (i < 10) {
i ++;
// 偶数时跳出当前这次循环,进入下一轮循环的判断
if (i % 2 == 0) {
continue;
}
System.out.print(i + "\t");
}
System.out.println("\n" + "循环外的代码依旧会被执行!");
运行效果:
1 3 5 7 9
循环外的代码依旧会被执行!
- 拓展:关于 goto 关键字
- goto 关键字很早就在程序语言中出现,尽管 goto 仍是 Java 的一个保留字,但并未在语言中得到正式使用;Java 没有 goto,然而,在 break 和 continue 这两个关键字的身上,我们仍然能看出一些 goto 的影子——带标签的 break 和 continue。
- “标签”是在后面跟一个冒号的标识符,例如:label:
- 对Java来说,唯一用到标签的地方是在循环语句之前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于 break 和 continue 关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
“标签”代码示例:
// 打印 101 - 150 之间所有的质数
// 质数:是指在大于 1 的自然数中,除了 1 和它本身以外,不再有其它因数的自然数
outer:for (int i = 101; i <= 150; i ++) {
// 判断是否是质数
for (int j = 2; j < i / 2; j ++) {
if (i % j == 0) {// 不是质数
continue outer;// 跳回 outer 标签所在循环
}
}
// 输出质数
System.out.print(i + "\t");
}
运行结果:
101 103 107 109 113 127 131 137 139 149