第五章 控制流

迭代语句

逗号操作符

在 Java 中逗号运算符(这里并非指我们平常用于分隔定义和方法参数的逗号分隔符)仅有一种用法:在 for 循环的初始化和步进控制中定义多个变量。我们可以使用逗号分隔多个语句,并按顺序计算这些语句。注意:要求定义的变量类型相同。

for-in 语法

Java 5 引入了更为简洁的“增强版 for 循环”语法来操纵数组和集合。大部分文档也称其为 for-each 语法,但因为了不与 Java 8 新添的 forEach() 产生混淆,因此我称之为 for-in 循环。

for-in 循环适用于任何可迭代(iterable)的 对象。

两种无限循环的形式: for(;;)while(true) 无异,使用哪种完全取决于你的编程品味。

臭名昭著的 goto

随着 Edsger Dijkstra发表著名的 “Goto 有害” 论(Goto considered harmful)以后,goto 便从此失宠。

Java 中并不支持 goto。然而,在 break 和 continue 这两个关键字的身上,我们仍能看出一些 goto 的影子。它们并不属于一次跳转,而是中断循环语句的一种方法。之所以把它们纳入 goto 问题中一起讨论,是由于它们使用了相同的机制:标签

对 Java 来说,唯一用到标签的地方是在循环语句之前。进一步说,它实际需要紧靠在循环语句的前方 —— 在标签和循环之间置入任何语句都是不明智的。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环或者一个开关。这是由于 break 和 continue 关键字通常只中断当前循环,但若搭配标签一起使用,它们就会中断并跳转到标签所在的地方开始执行。

在 Java 里需要使用标签的唯一理由就是因为有循环嵌套存在,而且想从多层嵌套中 break 或 continue。

在 Dijkstra 的 “Goto 有害” 论文中,他最反对的就是标签,而非 goto。他观察到 BUG 的数量似乎随着程序中标签的数量而增加。标签和 goto 使得程序难以分析。但是,Java 标签不会造成这方面的问题,因为它们的应用场景受到限制,无法用于以临时方式传输控制。由此也引出了一个有趣的情形:对语言能力的限制,反而使它这项特性更加有价值

switch

每个 case 均以一个 break 结尾。这样可使执行流程跳转至 switch 主体的末尾。这是构建 switch 语句的一种传统方式,但 break 是可选的。若省略 break, 会继续执行后面的 case 语句的代码,直到遇到一个 break 为止。通常我们不想出现这种情况,但对有经验的程序员来说,也许能够善加利用。注意最后的 default 语句没有 break,因为执行流程已到了 break 的跳转目的地。当然,如果考虑到编程风格方面的原因,完全可以在 default 语句的末尾放置一个 break,尽管它并没有任何实际的作用。

switch 字符串

Java 7 增加了在字符串上 switch 的用法。

转载于:https://www.cnblogs.com/huangwenjie/p/11356090.html

20190815 On Java8 第五章 控制流相关推荐

  1. 20190901 On Java8 第十五章 异常

    第十五章 异常 要想创建健壮的系统,它的每一个构件都必须是健壮的. 异常概念 C++的异常处理机制基于 Ada,Java 中的异常处理则建立在 C++的基础之上(尽管看上去更像 Object Pasc ...

  2. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

  3. 软件工程复习提纲——第五章

    软件工程复习提纲,期末.考研的学霸笔记 第五章--详细设计 第五章详细设计 详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统. 结构程序设计: 1)如果一个程序的代码块仅仅通过顺序.选择和循 ...

  4. [转]Windows Shell编程 第十五章【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988016】...

    第十五章 SHELL扩展 谈到Windows Shell编程,Shell扩展是最重要的科目之一,绝大多数商业应用的最酷特征的都是通过Shell扩展实现的,而且有许多显著的系统特征实际都是插入了扩展代码 ...

  5. c语言减少控制流变量,C语言 第3章 控制流 (1简单程序设计).ppt

    第三章 控制流 鹿豺绽身实滁盗猩毡佃聘配那好嚏桩执滴镍辱蓄填撂淬把俞袖未塘居补出C语言 第3章 控制流 (1简单程序设计)C语言 第3章 控制流 (1简单程序设计) 2 主要内容 学习三种结构的程序设 ...

  6. 疯狂Java讲义(读书笔记)(第五章)

    第五章面向对象(下) 5.1 Java 8 增强的包装类 把字符串类型的值转换为基本类型的值有两种方式. 利用包装类提供的parseXxx(String s)静态(除了Character之外的所有包装 ...

  7. JPA教程(第五章)

    转载自:https://www.cnblogs.com/vincentren/p/9596601.html 第五章 如果多表关联查询时(上节4.3)想将多表的中不同字段选出来时,咱们用的是java8语 ...

  8. 第五章-Linux实操篇

    title: 第五章 Linux实操篇 categories: Linux tags: linux typora-root-url: - abbrlink: 93414991 date: 2019-0 ...

  9. Windows Shell 扩展编程 第十五章

    转自:http://blog.csdn.net/chchzh/article/details/4597866 第十五章 SHELL扩展 谈到Windows Shell编程,Shell扩展是最重要的科目 ...

最新文章

  1. Python 实现九九乘法表
  2. 第七周实践项目5 排队看病模拟(队列)
  3. 【Scratch】青少年蓝桥杯_每日一题_6.09_密码
  4. flowable 动态多实例
  5. java基础代码实例_基础篇:详解JAVA对象实例化过程
  6. 动态表单及动态建表实现原理
  7. 图解利用栈实现递归函数的非递归计算
  8. python迭代对象_Python迭代对象与迭代器
  9. 解决下载GitHub项目速度慢的问题(2019.1.21亲测有效)
  10. 步步为营 .NET 设计模式学习笔记 九、Command(命令模式)
  11. PDF文档阅读软件眼睛保护色设置参数
  12. 解决:应用程序无法启动,因为应用程序的并行配置不正确
  13. js设为首页和加入收藏
  14. GitHub中国区前100名到底是什么样的人?(转载)
  15. 5.20——工作记录
  16. 艾克姆 STC15W4K56S4 IAP15W4K58S4 51开发板 大赛esp8266开发板 STC15W4K56S4
  17. Vue实战教程:利用自定义实现鼠标拖动元素效果
  18. python 维基百科爬虫_如何使用Python提取维基百科数据
  19. Python:实现aliquot sum等分求和算法(附完整源码)
  20. 在这个云时代,如何选择性价比更高的云服务器

热门文章

  1. 运动目标跟踪(十八)--阶段性总结
  2. 运动目标跟踪(十六)--OAB,SemiT,BSBT跟踪
  3. 湘潭大学计算机科学,湘潭大学计算机科学和技术一级学科.doc
  4. python纸牌游戏_《升级》扑克牌游戏——Python实现
  5. Java韩顺平 | IO流专题 | 学习小记
  6. e: 无法定位软件包_比Ctrl+c,ctrl+v还好用的复制粘贴:Ctrl+d ctrl+r ctrl+e等
  7. HTTP协议请求中返回的各个状态码对应的状态信息
  8. Google搜索命令语法大全
  9. FireEye:K3chang行动***欧洲外交部门
  10. Exchange Server 2007迁移Exchange Server 2010 (15)---启用Outlook anywhere