• break、continue以及return的区别


    break、continue以及return的区别如下:

    1、break

    break用于完全结束一个循环,跳出循环体,不再执行下面的代码。对于多层循环嵌套,如果break语句出现在嵌套循环中的内循环时,它仅仅只是终止了内循环的执行,对外循环不影响其执行。例如如下程序:

    public class BreakTest {
    
        public static void main(String[] args) {
            for (int i = 0; i < 5; i++) {
                if (i == 1) {
                    // 执行该语句时将结束循环
                    break;
                }
            }
        }
    }

    运行上面程序可以看到,当i等于1时,循环体遇到break语句,程序跳出该循环。

    break语句不仅可以结束其所在的循环,还可以结束外层循环,只需要在外层循环定义一个紧跟英文冒号(:)的标识,然后在循环体里使用带有标识的break语句,这样可以跳出多层循环。示例如下:

    public class BreakTest {
    
        public static void main(String[] args) {
            // outer作为外层循环的标识
            outer: for (int i = 0; i < 8; i++) {
                // 内层循环
                for (int j = 0; j < 5; j++) {
                    if (j == 3) {
                        // 跳出outer标签所标识的循环
                        break outer;
                    }
                }
            }
        }
    }

    通常紧跟break之后的标识,必须在break所在的循环的外层循环之前定义才有意义,因为break默认就是结束当前其所在的循环。

    2. continue

    continue的作用和break有点类似,区别是continue不会终止循环,只是忽略本次循环剩下的语句,接着开始下一次循环;而break则是完全终止循环。下面程序示范了continue的用法:

    public class ContinueTest {
    
        public static void main(String[] args) {
    
            for (int i = 0; i < 5; i++) {
                System.out.println("i=" + i);
                if (i == 2) {
                    // 忽略本次循环剩下的语句
                    continue;
                }
                System.out.println("continue后的输出语句");
            }
        }
    }

    打印结果为:

    i=0
    continue后的输出语句
    i=1
    continue后的输出语句
    i=2
    i=3
    continue后的输出语句
    i=4
    continue后的输出语句

    从打印结果可以看出,当i等于2时,"continue后的输出语句"没有打印出来,因为continue把此行代码忽略了,继续执行下一次循环。

    与break类似的是,continue后也可以紧跟一个标识,用于直接跳过标识所在循环的当次循环的剩下语句,重新开始下一次循环。例如下面的代码示例:

    public class ContinueTest {
    
        public static void main(String[] args) {
            // 外层循环
            outer: for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 3; j++) {
                    System.out.println("i=" + i + ";j=" + j);
                    if (j == 1) {
                        // 忽略outer所在循环中本次循环剩下的语句
                        continue outer;
                    }
                }
            }
        }
    }

    打印结果为:

    i=0;j=0
    i=0;j=1
    i=1;j=0
    i=1;j=1
    i=2;j=0
    i=2;j=1
    i=3;j=0
    i=3;j=1

    从运行结果中可以看出,当j等于1时,由于执行了continue outer语句,结束了外循环的当次循环,j的值无法超过1。

    3. return

    return关键字不是用来结束循环的,而是用于结束方法的。当一个方法执行到return语句时,该方法将被结束。如果在一个方法的循环体内执行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后的输出语句");
            }
        }
    }

    打印结果为:

    i=0
    return后的输出语句
    i=1

    从打印结果可以看出,当i等于1时,由于执行了return语句,所以这个方法及方法里的循环都结束了。值得注意的是:return结束的是整个方法,而不管这个return处于多少层循环之内。

    引申的问题:Java语言中是否存在goto关键字?

    goto关键字是Java的保留字,目前还没有在Java中使用。虽然不能像C/C++那样可以使用goto跳出多重循环,但在Java语言中可以使用break和continue来达到同样的效果。

    欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!

      ▼微信扫一扫下图↓↓↓二维码关注

     

  • 相关阅读:
    SpringBoog三步实现热部署
    Postman文档Using cookies及其实践
    <packaging>war</packaging>有毛用?
    vm win7镜像
    HttpClient发起请求,将响应结果(header和entity)设置到response中返回
    文件上传inputstream转为multipartfile
    前后端分离文件下载接口定义
    "随机数不随机"???
    Lombok注解-@SneakyThrows
    一文解读数据湖(转)
  • 原文地址:https://www.cnblogs.com/bingyimeiling/p/10433528.html
Copyright © 2020-2023  润新知