剖析Java控制语句break、continue、return之间的区别
控制语句的作用
控制语句即用来实现对程序的选择、循环、转向和返回等进行控制。
常用的转向控制有**break、continue、return、**goto(尽量少使用,因为不利于结构化程序设计,滥用会使程序流程无规律、可读性差)等。
各个控制语句的功能
break语句:终止整个循环
continue语句:终止本次循环,继续下次循环
break语句:直接返回;
各个控制语句之间区别的具体体现
接下来通过具体的代码示例来直观的体现各个控制语句的区别
- 在for循环中(break):
for(int i=0;i<10;i++) {
if (i==5) {
break;
}
System.out.println(i);
}
System.out.println("循环之后的输出");
控制台打印结果:
- 在for循环中(continue):
for(int i=0;i<10;i++) {
if (i==5) {
continue;
}
System.out.println(i);
}
System.out.println("循环之后的输出");
控制台打印结果:
- 在for循环中(return):
for(int i=0;i<10;i++) {
if (i==5) {
return;
}
System.out.println(i);
}
System.out.println("循环之后的输出");
控制台打印结果:
- 结合上面三个示例分析:
在for循环中,break 语句执行的结果能够打印出0 1 2 3 4 和循环之后的语句,是因为当i=5时,if判断结果为true,执行到了break语句,break语句的作用是终止整个循环,程序继续执行循环后的代码。continue语句执行的结果打印0 1 2 3 4 6 7 8 9和循环之后的语句,是因为因为当i=5时,if判断结果为true,执行到了continue语句,continue语句的作用是结束本次循环,继续下次循环,所以打印的结果中没有出现5。return语句执行的结果为0 1 2 3 4,没有打印出循环之后的语句,是因为return语句的作用是直接返回,结束程序,以至于没有打印出循环之后的打印语句。
控制语句在while循环和for循环中的不同表现
在while循环中,break语句和return语句执行的结果是相同的,只有continue语句的执行结果不同,下面来看看continue语句在while的结果:
int i = 0;
while (i<10) {
if (i==5) {
continue;
}
System.out.println(i);
i++;
}
System.out.println("循环之后的输出");
- 控制台打印结果:
- 从continue语句在while循环中打印的结果可以看出,控制台只打印出了0 1 2 3 4并不与continue语句在for循环中打印的结果相同,这是为什么呢?continue语句不是结束本次循环,继续下一次循环吗?
- 接下来对continue语句在while循环中的运行过程进行分析。当i=5时,if判断结果为true,执行到continue语句,结束了本次循环。为什么没有打印出6 7 8 9呢?可以看到代码块中,当i=5时,结束了本次循环,重新回到了while(i<10)判断,然而此时i的值依然是5,因为在执行到continue后,并没有执行到i++。那又为什么没有执行到循环之后的语句呢?当i=5时,执行到if语句中的continue,结束本次循环,i的值没有改变,然后就一直执行while(i<10)–>if(i==5){continue;}–>while(i<10)
程序一直没有跳出while循环,所以就没有执行到循环之后打代码。同时可以看到控制台一直没有停止运行,所以说明程序没有执行完毕,一直在重复运行while循环。这就是由while循环和for循环的不同特性所导致的不同结果。