循环控制之continue、break及return的用法比较

在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所在循环之前定义,也就失去了标签存在的必要性,此时breakbreak 标签都是结束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的功能有:

  1. 用于返回方法指定类型的值(这个值总是确定的),当然也可以是对象。
  2. 结束方法的执行;
    • 有返回值类型,例如: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处于多少层循环之内。

猜你喜欢

转载自blog.csdn.net/chaixingsi/article/details/82913575