在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在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 ...

随机推荐

  1. 简单的多选框选择功能js代码

    最近没事写了个特别基础的多选框功能代码,代码如下:js部分: //获取所有class为checkbox的多选按钮(需要以下功能需要先写出对应功能的元素). var checkBoxList = doc ...

  2. PL/SQL中的 not

    ELECT * FROM table_name WHERE column_name not like'%山%' 這時出現了column_name中為null值的情況也被剔掉了. 原因是:在SQL的表達 ...

  3. [MySQL]IP处理函数inet_aton()和inet_ntoa()

    INET_ATON(expr) 给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数.地址可以是4或8比特地址. mysql> ...

  4. ubuntu修复找不到sudo命令

    1.首先,您需要安装该sudo命令.你可以使用 apt 包管理器来做到这一点.您需要以有权安装软件包的用户身份运行此命令,例如root: apt-get install sudo 2.下一步是为您自己 ...

  5. VirtualBox使用报错

    VirtualBox使用报错 1.启动报错:Failed to instantiate CLSID_VirtualBox... 报错内容: Failed to instantiate CLSID_Vi ...

  6. 『忘了再学』Shell基础 — 8、管道符介绍

    我们之前已经有文章说过管道符了,今天这里再简单总结一下用法. 1.行提取命令grep grep命令的作用,是在指定的文件中,搜索符合条件的字符串. 命令格式: [root@localhost ~ ] ...

  7. Hyperledger Fabric无排序组织以Raft共识算法启动多个Orderer服务、多组织共同运行维护Orderer服务

    前言 在Hyperledger Fabric无系统通道启动及通道的创建和删除中,我们已经完成了以无系统通道的方式启动 Hyperledger Fabric 网络,并将链码安装到指定通道.但目前为止,实 ...

  8. synchronized有几种用法?

    在 Java 语言中,保证线程安全性的主要手段是加锁,而 Java 中的锁主要有两种:synchronized 和 Lock,我们今天重点来看一下 synchronized 的几种用法. 用法简介 使 ...

  9. 论文解读(SelfGNN)《Self-supervised Graph Neural Networks without explicit negative sampling》

    论文信息 论文标题:Self-supervised Graph Neural Networks without explicit negative sampling论文作者:Zekarias T. K ...

  10. 茴香豆的“茴”有四种写法,Python的格式化字符串也有

    茴香豆的"茴"有四种写法,Python的格式化字符串也有 茴香豆的"茴"有四种写法,Python的格式化字符串也有 被低估的断言 多一个逗号,少一点糟心事 上下 ...