在Java中,continue、break及return都可控制循环结构(这里先说一下在循环中的作用),结束循环的执行。但是它们也有所区别,下面分别来说明。
1、使用break结束循环
break作用:break既可以结束(跳出)当前循环(其所在的循环),也可以结束(跳出)标记的外层循环。注:【跳出当前前循环的例子不再展示,只展示结束所标记的外层循环的例子】
public class BreakTest {
public static void main(String[] args) {
//用outer来标记外层循环
outer:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("i=" + i + ",j=" + j);
if (j == 2) break outer;//结束outer所标记的外层循环
}
}
}
}
结果显而易见,外层循环执行一次,然后开始执行内层循环,当j==2
时,即内层循环执行三次,则直接结束外层循环,此时该程序停止执行,结果如下所示。
如上代码所示,Java中的标签就是一个紧跟着英文冒号的标识符,并且须放在break所在的循环的外层循环之前才能起作用,当然如果标签放在break所在循环之前定义,也就失去了标签存在的必要性,此时
break
或break 标签
都是结束break所在的循环(即当前循环)
2、使用continue结束本次循环
continue作用:continue是忽略本次循环剩下的语句,接着开始下一次循环,并不会终止循环。与break类似,continue后面也可以紧跟一个标签,用于直接跳过标签所标识的循环的当次循环的剩下语句,重新开始下一次循环。
public class ContinueTest {
public static void main(String[] args) {
// 外层循环
outer:
for (int i = 0; i < 3; i++) {
// 内层循环
for (int j = 0; j < 3; j++) {
System.out.println("i的值为:" + i + " j的值为:" + j);
if (j == 1) {
// 忽略outer标签所指定的循环中本次循环所剩下语句。
continue outer;
}
}
}
}
}
如下结果所示,当j==1时便结束了外层循环的当次循环,内层循环始终不能完整执行。【注:与break类似,continue后面所跟标签通常应放在continue所在循环的外层循环之前定义,否则毫无存在的意义】
3、使用return结束方法
return的功能有:
- 用于返回方法指定类型的值(这个值总是确定的),当然也可以是对象。
- 结束方法的执行;
- 有返回值类型,例如:
return i;
- 无返回值(void)类型
return;
- 有返回值类型,例如:
下面做个简单的演示,用于演示结束当前方法的执行。
public class ReturnTest {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println("i=" + i);
if (i == 1)
return;
System.out.println("return后输出语句");
}
}
}
从上可以看出,虽然return并不是专门用于循环结构控制的关键字,但通过return确实可以结束一个循环。与continue和break不同的是,return结束的是整个方法,不管return处于多少层循环之内。