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结束的是整个方法;

break、continue、return中选择一个,我们结束掉它的更多相关文章
- js中的break ,continue, return (转)
		
面向对象编程语法中我们会碰到break ,continue, return这三个常用的关键字,那么关于这三个关键字的使用具体的操作是什么呢?我们在使用这三关键字的时候需要注意和需要理解的规则是什么呢? ...
 - js中的break,continue,return
		
js中的break,continue, return (转) 面向对象编程语法中我们会碰到break ,continue, return这三个常用的关键字,那么关于这三个关键字的使用具体的操作是什么呢 ...
 - break,continue,return的区别
		
break,continue,return的区别 break 当break语句用于循环语句时,会终止执行循环,并执行循环后代码(如果有的话). function main() { for(var i ...
 - 详解C#break ,continue, return
		
C#编程语法中break ,continue, return这三个常用的关键字的学习对于我们编程开发是十分有用的,那么本文就向你介绍break ,continue, return具体的语法规范. C# ...
 - 有关于break,continue,return的区别和代码分析
		
今天,用代码和结果直接解释break,continue,return的区别 1.break代码 public static void breakTest() { //break的讲解 for(int ...
 - Java流程控制,for,switch,while.break,continue,return
		
Java流程控制,for,switch,while.break,continue,return
 - Java基础(2):Java中的四个跳转语句总结goto,break,continue,return
		
跳转控制语句 Java中的goto是保留字,目前不能使用.虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情.为了弥补这 ...
 - PHP中跳出循环break,continue,return,exit的区别
		
1. return 语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行. (2) return 返回一个值给调用该方法的语句,返回值的数 ...
 - js 中的break continue  return
		
break:跳出整个循环 1.当i=6时,就跳出了整个循环,此for循环就不继续了: continue:跳出当前循环,继续下一次循环: return :指定函数返回值 1.在js当中,常使用retur ...
 
随机推荐
- 内网穿透系列-Go语言
			
一.介绍 软件在KCP出现后进行了重构,将其底层UDP支持替换为了KCP,使其效率大大提高,在某些恶劣的网络环境下依旧能有不错的效果.当然,它也是支持TCP模式的,另外它也是支持加密的,在P2P打洞失 ...
 - sparksql Seq生成DataFrame
			
首先,使用样例类: case class User(id:Int,name: String,gender:String, age: Int) 之后使用Seq创建Dataframe val alice: ...
 - java中downcast向下转型到底有什么用
			
What is the point of downcast? 当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see th ...
 - iOS开发 将html 富文本文字 转换成oc 的富文本
			
- (NSMutableAttributedString *)mf_htmlAttribute:(NSString *)htmlString{ htmlString = [NSString strin ...
 - Java实现单链表的合并(保证数据的有序性)
			
一.思路 1.比较两个链表的大小 2.将小链表插入到大链表中 3.使用插入保证链表数据的有序性 二.核心代码 /** * 合并两个链表,并且按照有序合并 * @param singleLinkedLi ...
 - Lumia一键刷稳定版 Win10 arm 及其报错处理
			
前言 之前我发了一篇Lumia1520 刷Win10 arm双系统的文章,不过后来发现那个方法对小白来说太不友好,且系统也不稳定,所以我找到了更好的方法 刷机 我们可以利用刷机迷进行刷机,支持一键刷机 ...
 - Java应用工程结构
			
分层的本质是关注点分离,隔离对下层的变化,可以简化复杂性,使得层次结构更加清晰. 1. 主流分层结构介绍 目前业界存在两种主流的应用工程结构:一种是阿里推出的<Java开发手册>中推荐的, ...
 - acwing刷题-放养又没有完全放养
			
题目 一个鲜为人知的事实是,奶牛拥有自己的文字:「牛文」. 牛文由 26 个字母 a 到 z 组成,但是当奶牛说牛文时,可能与我们所熟悉的 abcdefghijklmnopqrstuvwxyz 不同, ...
 - 【HarmonyOS学习笔记】记第一次使用IDE
			
哈喽大家好我是脸皮贼厚的小威 愚人节刚过先给大家拜个早年吧 最近在HarmonyOS官网下载了IDE,并抱着学(wan)习(wan)的心态试着跑出了Hello World,并安装到手机上 这是一个简单 ...
 - jsp第二周作业
			
1.p39 实验2 显示当前时间,并输出上午(0-12)好,下午好(13-17),晚上好(18-23) <%@ page language="java" import=&qu ...