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 ...
随机推荐
- Content Security Policy减少劫持
Content Security Policy减少劫持 什么是CSP? CSP是由单词 Content Security Policy 的首单词组成,是HTML5带给我们的一套全新主动防御的体系,旨在 ...
- 从零开始开发一款H5小游戏(三) 攻守阵营,赋予粒子新的生命
本系列文章对应游戏代码已开源 Sinuous game. 每个游戏都会包含场景和角色.要实现一个游戏角色,就要清楚角色在场景中的位置,以及它的运动规律,并能通过数学表达式表现出来. 场景坐标 canv ...
- Java中的反射以及简单运用(原理+例子)
Java反射 学习内容 1. 为什么要使用反射 2. 反射的概念 3. Java反射加载过程 4. 字节码对象理解 5. 获取字节码对象(.class)的三种方式 6. 反射常用API 8. 反射综合 ...
- java多线程的状态转换以及基本操作
1. 新建线程 一个java程序从main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上java程序天生就是一个多线程程序,包含了:(1)分发处理发送给给JVM信号的线程 ...
- CommonsCollection6反序列化链学习
CommonsCollection6 1.前置知识 1.1.HashSet HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合.继承了序列化和集合 构造函数参数为空的话创建一 ...
- SpringMVC踩坑2
Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exc ...
- Java8 新特性,打破你对接口的认知
Java 8 之前,接口里面只能写抽象方法,不能写实现方法 Java 8 开始是可以有方法实现的,可以在接口中添加默认方法和静态方法 默认方法用 default 修饰,只能用在接口中,静态方法用 st ...
- 真实本人亲测Elasticsearch未授权访问漏洞——利用及修复【踩坑指南到脱坑!】
如要转载请注明出处谢谢: https://www.cnblogs.com/vitalemontea/p/16105490.html 1.前言 某天"发现"了个漏洞,咳咳,原本以为这 ...
- 攻防世界-MISC:János-the-Ripper
这是攻防世界MISC高手进阶区的题目: 点击下载附件一,解压后得到一个没有后缀的文件,老规矩用010editor打开,发现存在一个flag.txt文件 用foremost分离一下: flag.txt被 ...
- XCTF练习题---WEB---view_source
XCTF练习题---WEB---view_source flag:cyberpeace{662b1cf989a0a7999a5589290ce5a88e} 解题步骤: 1.观察题目,打开场景 2.根据 ...