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

一、break

1.1、单层循环

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

  1. package com.my.day02;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * 测试break
  6. * @date 2022/5/23 21:13
  7. */
  8. public class TestBreak {
  9. public static void main(String[] args) {
  10. endCycle();
  11. }
  12. /**
  13. * 单层循环
  14. */
  15. static void endCycle(){
  16. List<String> list=new ArrayList<String>();
  17. list.add("1");
  18. list.add("2");
  19. list.add("3");
  20. list.add("4");
  21. for(String str:list){
  22. if(str.equals("3")){
  23. break;
  24. }
  25. System.out.println("单层:"+str);
  26. }
  27. }
  28. }

结果如下,

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

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

1.2、多层循环

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

  1. package com.my.day02;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * 测试break
  6. * @date 2022/5/23 21:13
  7. */
  8. public class TestBreak {
  9. public static void main(String[] args) {
  10. endMultiCycle();
  11. }
  12. /**
  13. * 多层循环
  14. */
  15. static void endMultiCycle(){
  16. List<String> list=new ArrayList<String>();
  17. list.add("1");
  18. list.add("2");
  19. list.add("3");
  20. list.add("4");
  21. List<String> innerList=new ArrayList<String>();
  22. innerList.add("A");
  23. innerList.add("B");
  24. innerList.add("C");
  25. for(String str:list){
  26. for(String innerStr:innerList){
  27. if(innerStr.equals("B")){
  28. break;
  29. }
  30. System.out.println("外层:"+str+",内层:"+innerStr);
  31. }
  32. }
  33. }
  34. }

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

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

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

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

二、continue

2.1、单层循环

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

  1. package com.my.day02;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * 测试continue
  6. * @date 2022/5/23 21:17
  7. */
  8. public class TestContinue {
  9. public static void main(String[] args) {
  10. endCycle();
  11. }
  12. static void endCycle(){
  13. List<String> list=new ArrayList<String>();
  14. list.add("1");
  15. list.add("2");
  16. list.add("3");
  17. list.add("4");
  18. for(String str:list){
  19. if(str.equals("3")){
  20. continue;
  21. }
  22. System.out.println(str);
  23. }
  24. }
  25. }

执行结果如下,

  1. 1
  2. 2
  3. 4
  4. Process finished with exit code 0

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

2.2、多层循环

在多层循环下,

  1. package com.my.day02;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * 测试continue
  6. * @date 2022/5/23 21:17
  7. */
  8. public class TestContinue {
  9. public static void main(String[] args) {
  10. endMultiCycle();
  11. }
  12. /**
  13. * 多层循环-continue
  14. */
  15. static void endMultiCycle(){
  16. List<String> list=new ArrayList<String>();
  17. list.add("1");
  18. list.add("2");
  19. list.add("3");
  20. list.add("4");
  21. List<String> innerList=new ArrayList<String>();
  22. innerList.add("A");
  23. innerList.add("B");
  24. innerList.add("C");
  25. for(String str:list){
  26. for(String innerStr:innerList){
  27. if(innerStr.equals("B")){
  28. continue;
  29. }
  30. System.out.println("外层:"+str+",内层:"+innerStr);
  31. }
  32. }
  33. }
  34. }

执行结果是下面这样的,

  1. 外层:1,内层:A
  2. 外层:1,内层:C
  3. 外层:2,内层:A
  4. 外层:2,内层:C
  5. 外层:3,内层:A
  6. 外层:3,内层:C
  7. 外层:4,内层:A
  8. 外层:4,内层:C
  9. Process finished with exit code 0

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

三、return

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

3.1、单层循环

  1. package com.my.day02;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * 测试return
  6. * @date 2022/5/23 21:40
  7. */
  8. public class TestReturn {
  9. public static void main(String[] args) {
  10. endCycle();
  11. }
  12. /**
  13. * 单层循环
  14. */
  15. static void endCycle(){
  16. List<String> list=new ArrayList<String>();
  17. list.add("1");
  18. list.add("2");
  19. list.add("3");
  20. list.add("4");
  21. for(String str:list){
  22. if(str.equals("3")){
  23. return;
  24. }
  25. System.out.println("单层:"+str);
  26. }
  27. System.out.println("方法结束");
  28. }
  29. }

执行结果,

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

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

3.2、多层循环

  1. package com.my.day02;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * 测试return
  6. * @date 2022/5/23 21:40
  7. */
  8. public class TestReturn {
  9. public static void main(String[] args) {
  10. endMultiCycle();
  11. }
  12. /**
  13. * 多层循环
  14. */
  15. static void endMultiCycle(){
  16. List<String> list=new ArrayList<String>();
  17. list.add("1");
  18. list.add("2");
  19. list.add("3");
  20. list.add("4");
  21. List<String> innerList=new ArrayList<String>();
  22. innerList.add("A");
  23. innerList.add("B");
  24. innerList.add("C");
  25. for(String str:list){
  26. for(String innerStr:innerList){
  27. if(innerStr.equals("B")){
  28. return;
  29. }
  30. System.out.println("外层:"+str+",内层:"+innerStr);
  31. }
  32. }
  33. }
  34. }

结果如下,

  1. 外层:1,内层:A
  2. 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 ...

随机推荐

  1. 圣诞节,把网站所有的js代码都压缩成圣诞树吧。

    本文分两章节,分别讲解如何使用js2image这个库生成可以运行的圣诞树代码 和 js2image的原理. github地址:https://github.com/xinyu198736/js2ima ...

  2. call、apply和 bind的简单使用方法

    - call.apply:在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. J ...

  3. 驳《我不是很懂 Node.js 社区的 DRY 文化》

    今天在群里有人讨论方老师的文章<我不是很懂 Node.js 社区的 DRY 文化>,我也看了一遍,槽点太多,不知道如何下笔. 方老师分析了几个依赖最多的 npm 包,每个都只有不到百行代码 ...

  4. 【Android开发】【数据库】LitePal 数据库的使用

    一,导包 dependencies { ...... // LitePal的包 compile 'org.litepal.android:core:1.3.1' ...... } 二,创建bean类 ...

  5. ServletContext介绍和用法总结

    ServletContext介绍和用法总结 学习总结 一.ServletContext 介绍 1. 概念 2. 作用 3. 获取 3.1 在实现类中获取 3.2 在 Spring 容器中获取 二.Se ...

  6. vue和react给我的感受

    以下纯属个人使用两个框架的感想和体会: 不知道你们是否有这种感觉~ 我vue和react都用过一段时间,但是vue给我感觉就是经常会忘记语法,需要对照文档才知道怎么写( 难不成是我没喝六个核桃的原因吗 ...

  7. win10设置开机自启动程序

    问题情境:前两天刚刚给自己的win10系统美化了一下,但发现一个问题,每次开机都需要双击启动一个程序,才能达到一个我想要的效果,所以就在思考能不能将这个程序设为开机自启动项呢? 1.首先,找到启动文件 ...

  8. 内网穿透NPS

    内网穿透实现 nps文档 https://ehang-io.github.io/nps/#/install nps docker镜像 https://hub.docker.com/r/ffdfgdfg ...

  9. Bootstrap Blazor Table 组件(二)

    原文链接:https://www.cnblogs.com/ysmc/p/16128206.html 很多小伙伴在使用 Bootstrap Blazor Table组件的时候,都会有这样的一个需求: 我 ...

  10. 从源码学习UEToll

    从源码学习UEToll 捕获控件梳理 相对位置功能梳理 网格栅栏功能梳理 捕获代码分析 TransparentActivity public @interface Type { int TYPE_UN ...