【Java】不正当使用break语句的危害
(这里是临时打的,连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语句的危害相关推荐
- Java学习篇八——break语句
写在前面:本人是借助两本参考书自学的,其中部分例子和语句均是来自参考书.第一本:<Java 编程指南>,[美] Budi Kurniawan 著,闫斌 贺莲 译.第二本:<第一行代码 ...
- 《Java 7程序设计入门经典》一3.14 像使用goto语句一样使用break语句
3.14 像使用goto语句一样使用break语句 除了用于switch语句和循环外,break语句也可以用提供像goto语句一样的用法.由于goto语句是一种改变程序流的非结构化方法,因此Java并 ...
- Java教程:Java break语句:跳出循环
Java教程某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环.此时,可以使用 break 来完成这个功能. 本篇文章由 泉州SEO www.234yp.com ...
- Java 1.3.1 带标签的 break语句
与 C++ 不同,Java 还提供了一种带标签的 break语句,用于跳出多重嵌套的循环语句. 标签必须放在希望跳出的最外 层循环之前, 并且必须紧跟一个冒号. Scanner in = new Sc ...
- Java break语句,标签
Java break statement is used to terminate the loop in between it's processing. We use break reserve ...
- Java break语句详解
在 Java 中,break 语句有 3 种作用,分别是:在 switch 语句中终止一个语句序列.使用 break 语句直接强行退出循环和使用 break 语句实现 goto 的功能. 在 swit ...
- Java基础break语句
break;语句: 1.break;语句比较特殊,特殊在:break语句是一个单词成为一个完整的java语句. 另外:continue也是这样,他俩都是一个单词成为一条语句. 2.break 翻译为折 ...
- Java break语句:跳出循环
某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环.此时,可以使用 break 来完成这个功能. break 用于完全结束一个循环,跳出循环体.不管是哪种循环,一 ...
- break在java语言中什么意思_在Java语言的控制结构中,break语句是经常用到的语句。在switch语句中break语句的作用是( )_学小易找答案...
[单选题]( )是一个综合性的网络营销工具,在所有的网络营销工具中也是最基本.最重要的一个. [单选题]给出下列的代码,哪行在编译时可能会有错误( ) 1 public static void mai ...
最新文章
- Android 使用RxJava--基础篇
- java.sql.SQLException: Column ‘class‘ not found.异常没有找到列
- 你注意到 .Net Framework 和 .Net Core 中使用 Session 的区别了吗?
- maven设置jdk版本
- 从严治码-别人在项目中下毒,我该怎么治?
- Angular网络请求的封装
- mysql unix formtime_linux下find命令-atime,-ctime,-mtime真正含义
- teamviewer11 android,teamviewer安卓最新版本
- 10个精妙的Java编码最佳实践
- 5分钟带你入门vuex(vue状态管理)
- 算法导论第三版 21.2-3习题答案
- 值得推荐的几款卸载软件工具
- 用Python下载xkcd图片
- 如何用ps 在图片上面写字
- CSS设置html网页背景图片 CSS设置网页背景颜色
- SliceM与SliceL
- freebsd php 编译 mysql sql2005_[伊达原创]FreeBSD8.0源码编译安装MYSQL5 APACHE2.2 PHP5.3.2
- sudo apt-get update报错:W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件
- 美团前端组件化开发实践
- 前端HTML点击图片放大效果展示
热门文章
- Android应用安全开发之浅谈网页打开APP
- bzoj 1257: [CQOI2007]余数之和sum 数论
- winform 分页控件分享(二)
- PHP汉字转拼音的类
- PDF N-Up Maker:一个把PDF转成小册子或者把多个页面放到一个页面上的工具(免费,免Acrobat,命令行模式)...
- 时间转换python_Python 日期与时间转换的方法
- 河北大学计算机专业调剂,【计算机考研调剂】河北大学2021级硕士研究生预调剂信息统计的通知...
- c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
- mysql同步数据到另一张表_mysql:Otter跨机房数据同步(单向)
- php switch if,php switch 与 if else 区别