当前位置: 首页 > news >正文

break与continue关键字

1.概述

不知道大家有没有这样一种感受哈,有的时候容易混淆break语句和continue语句的用法,总是模棱两可,不敢确定自己是否使用正确了。正好,我们本篇的重点就是break和continue关键字的用法。

2.使用场景

Java中为啥会诞生breakcontinue关键字呢?其主要目的是用来中断流程控制语句,例如switch语句、for循环。

3.break关键字

3.1 用于switch语句

上面提到了switch语句,那么我们先来看看switch语句的用法。

String season = "Spring";
switch (season) {
case "Spring":System.out.println("春天花会开,鸟儿自由自在");break;
case "Summer":System.out.println("接天莲叶无穷碧,映日荷花别样红");break;
case "Autumn":System.out.println("人生若只如初见,何事秋风悲画扇");break;
case "Winter":System.out.println("孤舟蓑笠翁,独钓寒江雪");break;
default:System.out.println("原来岁月这般温柔");break;
}

switch语句将从与选项值相匹配的case标签处开始执行,直到遇到break语句,或者执行到switch语句的结束处为止。如果没有匹配的case标签,则会执行default语句。

可以看到,break语句在switch语句起到了中断流程的作用,试想一下,如果在case语句中没有break语句,那么就会接着执行下一个case语句,就会引发程序结果的错误。

switch语句执行流程

好的,我们再来回顾一下,case标签支持的类型:char、byte、short、int、String。

3.2 用于循环体

1)结束当前层循环

代码示例:

List<String> seasons = List.of("Spring", "Summer", "Autumn", "Winter");
for (String season : seasons) {if ("Spring".equals(season)) {System.out.println("春天花会开,鸟儿自由自在!");break;}System.out.println("岁月静好");
}
// 执行结果:春天花会开,鸟儿自由自在!

以上代码的执行结果中并不会执行循环体的最后一句代码,因为当if条件成立时,就会结束当前层的循环。请注意,这里特别强调是当前层(表示break所处的这个循环体),为什么会有当前层这个说法呢?很多时候,我们在处理数据的时候,会用到嵌套循环。好的,我们来看个嵌套循环的案例:

List<String> cities = List.of("成都", "昆明");
List<String> seasons = List.of("Spring", "Summer", "Autumn", "Winter");
for (String city : cities) {if ("成都".equals(city)) {for (String season : seasons) {if ("Summer".equals(season)) {System.out.println(season + ":接天莲叶无穷碧,映日荷花别样红");break;}}System.out.println(city + ":蜀道难,难于上青天");}if ("昆明".equals(city)) {System.out.println(city + ",又名春城,这里四季如春");}
}
// 执行结果为:
// Summer:接天莲叶无穷碧,映日荷花别样红
// 成都:蜀道难,难于上青天
// 昆明,又名春城,这里四季如春

从以上代码的执行结果可以看出,break语句只是结束了它所在的循环体,并不会影响外层循环体的执行。那么有没有办法可以结束整个循环体的执行呢?解决方法肯定是有的。

2)结束整个循环

flag:
for (String city : cities) {if ("成都".equals(city)) {for (String season : seasons) {if ("Summer".equals(season)) {System.out.println(season + ":接天莲叶无穷碧,映日荷花别样红");break flag;}}System.out.println(city + ":蜀道难,难于上青天");}if ("昆明".equals(city)) {System.out.println(city + ",又名春城,这里四季如春");}
}
// 执行结果:Summer:接天莲叶无穷碧,映日荷花别样红

结束整个循环,需要配合标签来完成,在循环体前定义一个标签,格式为lable:,就可以配合break关键字来完成结束整体循环。

3.3 小结

break语句用法:

1)用在switch语句中,结束case标签语句的执行。

2)用在循环体内,表示结束当前循环。

3)配合lable:标签语法,结束定义在标签之后的循环体,可用于嵌套循环时,结束整个循环。

4.continue关键字

与break语句一样,也可以用来中断流程控制语句,break语句是结束当前循环体的执行,而continue语句是结束当前循环体中本次循环的执行,continue语句之后的剩余部分的代码不会被执行,而是直接进行下次循环。

示例代码:

List<String> seasons = List.of("Spring", "Summer", "Autumn", "Winter");
for (String season : seasons) {if ("Summer".equals(season)) {System.out.println(season + ":接天莲叶无穷碧,映日荷花别样红");continue;}System.out.println(season + ":岁月静好");
}
// 执行结果:
// Spring:岁月静好
// Summer:接天莲叶无穷碧,映日荷花别样红
// Autumn:岁月静好
// Winter:岁月静好

根据执行结果可以看出,continue语句之后的代码没有被执行,起到了跳过本次循环体的作用。

http://www.lryc.cn/news/21458.html

相关文章:

  • kafka使用入门案例与踩坑记录
  • 系统启动太慢,调优后我直呼Nice
  • java知识点
  • 文件的打开关闭和顺序读写
  • (十八)操作系统-进程互斥的软件实现方法
  • 2023年三月份图形化一级打卡试题
  • linux 防火墙管理-firewalld
  • 2023年最新大厂开发面试题(滴滴,华为,京东,腾讯,头条)
  • 2023年三月份图形化三级打卡试题
  • 蓝桥杯算法模板
  • python之并发编程
  • Vue.js自定义事件的使用(实现父子之间的通信)
  • 第12天-商品维护(发布商品、商品管理、SPU管理)
  • 动态分区分配计算
  • 【云原生】k8s的pod基本概念
  • 【史上最全面esp32教程】激光与食人鱼模块篇
  • 《代码整洁之道》二之有意义的命名
  • 天气预测demo
  • HDMI协议介绍(四)--Video
  • 微信授权登录流程以及公众号配置方法(golang后端)
  • 【软件测试面试题】大厂头条:如何定位bug?实际案例拿offer还不简单......
  • kubeconfig生成最高权限的token
  • Android 9.0 蓝牙去掉传输文件的功能
  • C语言指针易错点—字符数组与字符指针
  • Yolov3,v4,v5区别
  • 基于Appium+WinAppDriver+Python的winUI3应用的自动化框架搭建分享(一)环境配置
  • 使用docker安装RocketMQ
  • 【FPGA仿真】Matlab生成二进制、十六进制的txt数据以及Vivado读取二进制、十六进制数据并将结果以txt格式保存
  • 【第四章 IOC操作bean管理(基于注解方式创建对象,注入属性),完全注解开发】
  • 【手把手一起学习】(六) Altium Designer 20 STM32核心板Demo----PCB设计