• break、continue、return中选择一个,我们结束掉它


      在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在java中有break、continue、reture三个关键字都可以结束循环,我们看下他们的区别。

    一、break

    1.1、单层循环

    我们先看下在只有一层循环的情况下,break是怎么起作用的,

    package com.my.day02;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 测试break
     * @date 2022/5/23 21:13
     */
    public class TestBreak {
        public static void main(String[] args) {
            endCycle();
        }
    
        /**
         * 单层循环
         */
        static void endCycle(){
    
            List<String> list=new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
            for(String str:list){
                if(str.equals("3")){
                    break;
                }
                System.out.println("单层:"+str);
            }
        }
    }

    结果如下,

    单层:1
    单层:2
    
    Process finished with exit code 0

    在单层循环中,break结束的是整个循环,后续的不再执行;

    1.2、多层循环

    看下单层循环和多层循环有区别吗,

    package com.my.day02;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 测试break
     * @date 2022/5/23 21:13
     */
    public class TestBreak {
        public static void main(String[] args) {
            endMultiCycle();
        }
    
        /**
         * 多层循环
         */
        static void endMultiCycle(){
    
            List<String> list=new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
    
            List<String> innerList=new ArrayList<String>();
            innerList.add("A");
            innerList.add("B");
            innerList.add("C");
            for(String str:list){
                for(String innerStr:innerList){
                    if(innerStr.equals("B")){
                        break;
                    }
                    System.out.println("外层:"+str+",内层:"+innerStr);
                }
    
            }
        }
    }

    我们来看下多层循环会是什么结果那,

    外层:1,内层:A
    外层:2,内层:A
    外层:3,内层:A
    外层:4,内层:A
    
    Process finished with exit code 0

    可以看到内层循环仅执行了一次。由此,在多层循环下,break结束的是本层循环。 

    对于,break这个关键字,结束的是本层循环,满足break条件后的循环不会执行。

    二、continue

    2.1、单层循环

    先看下在单层循环下,continue是如何工作的,

    package com.my.day02;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 测试continue
     * @date 2022/5/23 21:17
     */
    public class TestContinue {
        public static void main(String[] args) {
            endCycle();
        }
        static void endCycle(){
    
            List<String> list=new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
    
            for(String str:list){
                if(str.equals("3")){
                    continue;
                }
                System.out.println(str);
            }
        }
    }

    执行结果如下,

    1
    2
    4
    
    Process finished with exit code 0

    没用打印”3“,由此得出结论,continue在单层循环下,结束的是该循环中的本次循环,后面的循环会继续执行。在多次循环下呐?

    2.2、多层循环

    在多层循环下,

    package com.my.day02;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 测试continue
     * @date 2022/5/23 21:17
     */
    public class TestContinue {
        public static void main(String[] args) {
            endMultiCycle();
        }
        /**
         * 多层循环-continue
         */
        static void endMultiCycle(){
    
            List<String> list=new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
    
            List<String> innerList=new ArrayList<String>();
            innerList.add("A");
            innerList.add("B");
            innerList.add("C");
            for(String str:list){
                for(String innerStr:innerList){
                    if(innerStr.equals("B")){
                        continue;
                    }
                    System.out.println("外层:"+str+",内层:"+innerStr);
                }
            }
        }
    }

    执行结果是下面这样的,

    外层:1,内层:A
    外层:1,内层:C
    外层:2,内层:A
    外层:2,内层:C
    外层:3,内层:A
    外层:3,内层:C
    外层:4,内层:A
    外层:4,内层:C
    
    Process finished with exit code 0

    可以看到外层循环正常,内层循环只有"B"未打印。由此,在多层循环下,continue结束的是本层循环中的本次循环。 

    三、return

    小伙伴们肯定知道return代表方法的返回,那么用在循环中它是怎么起作用的呐,

    3.1、单层循环

    package com.my.day02;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 测试return
     * @date 2022/5/23 21:40
     */
    public class TestReturn {
        public static void main(String[] args) {
            endCycle();
        }
        /**
         * 单层循环
         */
        static void endCycle(){
    
            List<String> list=new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
            for(String str:list){
                if(str.equals("3")){
                    return;
                }
                System.out.println("单层:"+str);
            }
            System.out.println("方法结束");
        }
    }

    执行结果,

    单层:1
    单层:2
    Process finished with exit code 0

    可以看到”方法结束“和”“3”后面的循环都未打印。在单层循环中,return会结束整个方法。

    3.2、多层循环

    package com.my.day02;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 测试return
     * @date 2022/5/23 21:40
     */
    public class TestReturn {
        public static void main(String[] args) {
            endMultiCycle();
        }
        /**
         * 多层循环
         */
        static void endMultiCycle(){
    
            List<String> list=new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
    
            List<String> innerList=new ArrayList<String>();
            innerList.add("A");
            innerList.add("B");
            innerList.add("C");
            for(String str:list){
                for(String innerStr:innerList){
                    if(innerStr.equals("B")){
                        return;
                    }
                    System.out.println("外层:"+str+",内层:"+innerStr);
                }
    
            }
        }
    }

     结果如下,

    外层:1,内层:A
    Process finished with exit code 0

    从上面的结果可以知道,在外层循环的第一次循环时,内层循环到“B”就会执行“return”,这时没再执行后面的。多层循环中,return结束的是整个方法的执行。

    四、总结

      今天在写程序时用到了多层循环,想结束内层循环,突然对如何结束循环有点把握不准,为此有了本文。

     1、break用在结束本层循环,后面的循环不会继续执行;

      2、continue用在结束本层循环中的本次循环,后面的循环会跳过本次循环继续执行,直到本层循环结束;

      3、return结束的是整个方法;

     

  • 相关阅读:
    jmeter 安装
    Day05_系统监控、rpm、yum软件包管理及源码安装python解释器
    Day04_vim编辑器及硬盘操作
    Day03_用户群组权限及正文处理命令
    Day02_操作系统、网络及Linux基础
    Day01_计算机硬件及启动流程
    让Sublime Text成为静态WEB服务器:SublimeServer
    sublime text2-text3 定义的不同浏览器的预览快捷键
    css之px自动转rem—“懒人”必备
    修改Sublime Text3 的侧边栏字体大小
  • 原文地址:https://www.cnblogs.com/teach/p/16303520.html
Copyright © 2020-2023  润新知