在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在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中选择一个,我们结束掉它的更多相关文章

  1. js中的break ,continue, return (转)

    面向对象编程语法中我们会碰到break ,continue, return这三个常用的关键字,那么关于这三个关键字的使用具体的操作是什么呢?我们在使用这三关键字的时候需要注意和需要理解的规则是什么呢? ...

  2. js中的break,continue,return

    js中的break,continue, return (转) 面向对象编程语法中我们会碰到break ,continue, return这三个常用的关键字,那么关于这三个关键字的使用具体的操作是什么呢 ...

  3. break,continue,return的区别

    break,continue,return的区别 break 当break语句用于循环语句时,会终止执行循环,并执行循环后代码(如果有的话). function main() { for(var i ...

  4. 详解C#break ,continue, return

    C#编程语法中break ,continue, return这三个常用的关键字的学习对于我们编程开发是十分有用的,那么本文就向你介绍break ,continue, return具体的语法规范. C# ...

  5. 有关于break,continue,return的区别和代码分析

    今天,用代码和结果直接解释break,continue,return的区别 1.break代码 public static void breakTest() { //break的讲解 for(int ...

  6. Java流程控制,for,switch,while.break,continue,return

    Java流程控制,for,switch,while.break,continue,return

  7. Java基础(2):Java中的四个跳转语句总结goto,break,continue,return

    跳转控制语句 Java中的goto是保留字,目前不能使用.虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情.为了弥补这 ...

  8. PHP中跳出循环break,continue,return,exit的区别

    1. return 语句的作用       (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行.       (2) return 返回一个值给调用该方法的语句,返回值的数 ...

  9. js 中的break continue return

    break:跳出整个循环 1.当i=6时,就跳出了整个循环,此for循环就不继续了: continue:跳出当前循环,继续下一次循环: return :指定函数返回值 1.在js当中,常使用retur ...

  10. Java关键字 Finally执行与break, continue, return等关键字的关系

    长文短总结: 在程序没有在执行到finally之前异常退出的情况下,finally是一定执行的,即在finally之前的return语句将在finally执行之后执行. finally总是在控制转移语 ...

随机推荐

  1. 使用maven构建一个helloworld maven项目

    1.下载maven http://maven.apache.org/ 选择一个较新版本下下来 2.配置m2_home环境变量 先解压,新建用户变量m2_home,将bin目录添加到path变量中 3. ...

  2. JavaScript 模块化加载

    存在AMD(Asynchronous Module Definition异步模块定义)规范和CMD(Common Module Definition通用模块定义)规范.对于依赖的模块,AMD是提前执行 ...

  3. textarea高度自适应问题

    textarea中的文字如果过多,就会产生滚动条,一本分文本被遮盖住,不能看到所有的文本. 那么,如何才能让textarea的高度随输入内容多少,可以自动的改变高度呢? 解决思想: 1 利用conte ...

  4. 调用android方法,出现版本太低解决方法

    原因如下图所示: 调用需要API级别11,当前是8. 解决方法如下图所示: 点击

  5. 让自己的开源项目支持CocoaPods

    测试的时候找个自己封装的方法或UI控件就可以了 这里用我刚封装的Redirect重定向的请求体为例 1, 在github上创建一个Redirect,重要:记得选择开源协议 (MIT)(如果木有GitH ...

  6. Debian9安装vim和vim无法右键鼠标粘贴解决方法

    问题描述: Debian9有时候安装的时候没有vim,在centos用习惯了vim 1.Debian安装vim: root@kvm1:/etc/network# apt-get install vim ...

  7. 4、new一个对象的时候,初始化顺序:

    父类静态块>子类静态块> 父类属性(先系统默认值,后直接你赋予的值) >父类构造器>子类属性>子类构造器

  8. 为什么用svg放弃了iconfont?

    svg替代iconfont的好处(无论是基于Vue.Jquery),都推荐svg http://www.woshipm.com/pd/463866.html svg图标库,svg图标在线制作 http ...

  9. react修改app.js添加中文内容后中文部分乱码解决

    [问题]:配置完react后修改app.js内容时添加中文出现如下乱码的中文. [A解决]文档——文本编码——转换文本编码,在弹出窗口修改,确定,搞定 [B解决]首先在EditPlus内:工具——首选 ...

  10. 【转载】linux Jumpserver跳板机堡垒机部署安装使用教程

    原文地址:https://idc.wanyunshuju.com/li/554.html