Java中控制循环的关键字(break,continue,return,System.exit(0))

原文链接:https://blog.csdn.net/qq_36852780/article/details/88830294

文章目录

一、break:结束循环
二、continue:结束本次循环
三、return:结束方法
四、System.exit(0):正常终止整个程序

大部分摘自:<疯狂Java讲义精粹>

一、break:结束循环

break用于完全结束一个循环,跳出循环体.
一旦在循环体中遇到break,系统将完全结束该循环,开始执行循环之后的代码.

break语句不仅可以结束其所在的循环,还可以直接结束其外层循环.此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环.
Java中的标签就是一个紧跟着英文冒号(:)的标识符.与其他语言不同,Java中的标签只有放在循环语句之前才有作用.
例:

public class BreakTest {
public static void main(String[] args) {
// 外层循环,outer作为标识符
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标签所标识的循环
break outer;
}
}
}
}
}
/*
运行结果:
i的值为:0 j的值为:0
i的值为:0 j的值为:1
*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

解释:
当j等于1时,程序遇到一个break outer;语句,这行代码将会导致结束outer标签指定的循环,不是结束break所在的循环,而是结束break循环的外层循环.
通常紧跟break之后的标签,必须在break所在循环的外层循环之前定义才有意义
二、continue:结束本次循环

continue知识终止本次循环,接着开始下一次循环;而break则是完全终止循环本身.
可以理解为continue的作用是跳过当次循环中剩下的语句,重新开始一次新的循环.

continue后也可以紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句,重新开始下一次循环.
例:

public class ContinueTest {
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

解释:
循环变量j的值将无法超过1,因为每当j等于1时,continue outer语句就结束了外层循环的当次循环,直接开始下一次循环,内层循环没有机会执行完成.
continue后的标签也必须是一个有效标签,即这个标签通常应该放在continue所在标签的外层循环之外定义.
三、return:结束方法

return关键字并不是专门用于结束循环的,return的功能是结束一个方法.当一个方法执行到一个return语句时,这个方法将被结束.

与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内.
四、System.exit(0):正常终止整个程序

终止当前运行的Java虚拟机。这个参数用作状态代码;按照约定,非零状态代码表示异常终止。

下面为System类中exit(int status)方法源码:

public static void exit(int status) {
Runtime.getRuntime().exit(status);
}

1
2
3

可知:System.exit(0) 等价于 Runtime.getRuntime().exit(0);

通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。此方法从不正常返回。可以将变量作为一个状态码;根据惯例,非零的状态码表示非正常终止。

虚拟机的关闭序列包含两个阶段。在第一个阶段中,会以某种未指定的顺序启动所有已注册的关闭钩子 (hook)如果有的话),并且允许它们同时运行直至结束。在第二个阶段中,如果已启用退出终结,则运行所有未调用的终结方法。一旦完成这个阶段,虚拟机就会暂停。

如果在虚拟机已开始其关闭序列后才调用此方法,那么若正在运行关闭钩子,则将无限期地阻断此方法。如果已经运行完关闭钩子,并且已启用退出终结 (on-exit finalization),那么此方法将利用给定的状态码(如果状态码是非零值)暂停虚拟机;否则将无限期地阻断虚拟机。

System.exit 方法是调用此方法的一种传统而便捷的方式。

————————————————
版权声明:本文为CSDN博主「-Clearlight」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36852780/article/details/88830294

上一篇:spring学习(01)之IOC


下一篇:Java SE入门(十五)——修饰符和内部类