(这里是临时打的,连IDE都没开,但是建议不要随便用Tab,在IDE里也要设置一下Tab->4*Space)

switch语句块不使用break,导致一直执行


其实图1的代码和下面的代码运行结果是一样的……

switch (a) {case 1:
case 2:
defalut:System.out.println("1");System.out.println("2");System.out.println("3");
}

for( ; ; )、while(true)等无限循环里面不使用break导致真正的“死循环”

//a为输入的值
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
int a = Integer.parseInt(a);
for (;;) {if (a == 1) {//do something} else if (a == 2) {//do something} else {//do something (但是此时应该退出,没有使用break)}
}

结果就是死循环呐,不过这只是一个demo,一般人不会写这种代码……
不过我在写那个置顶的博文——聊天机器人的时候那个系统就是有必要的退出和返回,依靠的就是从“无限循环”中跳出来,虽不见得是break,但思想是类似的。

不使用循环的“标签”,编译器:我咋知道你想break哪个?

Java语法里允许给for循环上一个“标签”(while也有,最后面给一个demo):

public class BreakTest2 {public static void main(String[] args) {List<String> strList = new ArrayList<>();strList.add("a");strList.add("b");strList.add("c");outer:for (String s : strList) {for (int i = 0; i < 2; i++) {System.out.println(i);if ("b".equals(s)) {break outer;}}}}
}

运行结果

0
1
0

如果我们不加这个tag(outer):

public class BreakTest2 {public static void main(String[] args) {List<String> strList = new ArrayList<>();strList.add("a");strList.add("b");strList.add("c");for (String s : strList) {for (int i = 0; i < 2; i++) {System.out.println(i);if ("b".equals(s)) {break;}}}}
}

运行结果

0
1
0
0
1

显然,只break了内层循环,编译器不知道是想跳转到外层循环以外……
凄惨……

亲测之后补充一下,while循环也可以加tag:


测试结果

0
1

证明有效哇

注意:如果没有特殊说明,编译器默认break只跳出当前循环(最内层)

【Java】不正当使用break语句的危害相关推荐

  1. Java学习篇八——break语句

    写在前面:本人是借助两本参考书自学的,其中部分例子和语句均是来自参考书.第一本:<Java 编程指南>,[美] Budi Kurniawan 著,闫斌 贺莲 译.第二本:<第一行代码 ...

  2. 《Java 7程序设计入门经典》一3.14 像使用goto语句一样使用break语句

    3.14 像使用goto语句一样使用break语句 除了用于switch语句和循环外,break语句也可以用提供像goto语句一样的用法.由于goto语句是一种改变程序流的非结构化方法,因此Java并 ...

  3. Java教程:Java break语句:跳出循环

    Java教程某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环.此时,可以使用 break 来完成这个功能. 本篇文章由 泉州SEO www.234yp.com ...

  4. Java 1.3.1 带标签的 break语句

    与 C++ 不同,Java 还提供了一种带标签的 break语句,用于跳出多重嵌套的循环语句. 标签必须放在希望跳出的最外 层循环之前, 并且必须紧跟一个冒号. Scanner in = new Sc ...

  5. Java break语句,标签

    Java break statement is used to terminate the loop in between it's processing. We use break reserve ...

  6. Java break语句详解

    在 Java 中,break 语句有 3 种作用,分别是:在 switch 语句中终止一个语句序列.使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能. 在 swit ...

  7. Java基础break语句

    break;语句: 1.break;语句比较特殊,特殊在:break语句是一个单词成为一个完整的java语句. 另外:continue也是这样,他俩都是一个单词成为一条语句. 2.break 翻译为折 ...

  8. Java break语句:跳出循环

    某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环.此时,可以使用 break 来完成这个功能. break 用于完全结束一个循环,跳出循环体.不管是哪种循环,一 ...

  9. break在java语言中什么意思_在Java语言的控制结构中,break语句是经常用到的语句。在switch语句中break语句的作用是( )_学小易找答案...

    [单选题]( )是一个综合性的网络营销工具,在所有的网络营销工具中也是最基本.最重要的一个. [单选题]给出下列的代码,哪行在编译时可能会有错误( ) 1 public static void mai ...

最新文章

  1. Android 使用RxJava--基础篇
  2. java.sql.SQLException: Column ‘class‘ not found.异常没有找到列
  3. 你注意到 .Net Framework 和 .Net Core 中使用 Session 的区别了吗?
  4. maven设置jdk版本
  5. 从严治码-别人在项目中下毒,我该怎么治?
  6. Angular网络请求的封装
  7. mysql unix formtime_linux下find命令-atime,-ctime,-mtime真正含义
  8. teamviewer11 android,teamviewer安卓最新版本
  9. 10个精妙的Java编码最佳实践
  10. 5分钟带你入门vuex(vue状态管理)
  11. 算法导论第三版 21.2-3习题答案
  12. 值得推荐的几款卸载软件工具
  13. 用Python下载xkcd图片
  14. 如何用ps 在图片上面写字
  15. CSS设置html网页背景图片 CSS设置网页背景颜色
  16. SliceM与SliceL
  17. freebsd php 编译 mysql sql2005_[伊达原创]FreeBSD8.0源码编译安装MYSQL5 APACHE2.2 PHP5.3.2
  18. sudo apt-get update报错:W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件
  19. 美团前端组件化开发实践
  20. 前端HTML点击图片放大效果展示

热门文章

  1. Android应用安全开发之浅谈网页打开APP
  2. bzoj 1257: [CQOI2007]余数之和sum 数论
  3. winform 分页控件分享(二)
  4. PHP汉字转拼音的类
  5. PDF N-Up Maker:一个把PDF转成小册子或者把多个页面放到一个页面上的工具(免费,免Acrobat,命令行模式)...
  6. 时间转换python_Python 日期与时间转换的方法
  7. 河北大学计算机专业调剂,【计算机考研调剂】河北大学2021级硕士研究生预调剂信息统计的通知...
  8. c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
  9. mysql同步数据到另一张表_mysql:Otter跨机房数据同步(单向)
  10. php switch if,php switch 与 if else 区别