`
凌紫冥
  • 浏览: 24519 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java编程思想第四版——第十二天

    博客分类:
  • Java
 
阅读更多
2012-04-09
102-108/913

Java编程思想第四版——第十二天

4.6 break和continue
在任何迭代语句的主体部分,都可用break和continue控制循环的流程。Break用于强行退出循环,不执行循环中剩余的语句。Continue停止执行当前的迭代,退回循环起始处,开始下一次迭代。
通常,只有在不知道中断条件何时满足时,才需要这样使用break。
编译器将while(true)和for(;;)看做是同一回事,具体选用哪个取决于编程习惯。

4.7 臭名昭著的goto
Goto起源于汇编语言的程序控制:若条件A成立,则跳到这里,否则跳到那里。
如果阅读由编译器最终生成的汇编代码,就会发现程序控制里包含了许多跳转。(java编译器生成它自己的“汇编代码”,这个代码是运行在java虚拟机上的,不是直接运行在cpu硬件上的。)
Goto语句是在源码级上的跳转。问题:无法识别程序的控制流程。
break和continue类似于goto跳转操作。它们其实不是一个跳转,而是中断迭代语句的一种方法,把他们纳入goto问题中一起讨论,是由于他们使用了相同的机制:标签。
标签是后面跟有冒号的标识符:label1:。
在java中,标签起作用的唯一的地方刚好是在迭代语句之前。“刚好之前”的意思表明,在标签和迭代之间置入任何语句都不好。在迭代之前设置标签的唯一理由:我们希望在其中嵌套另一个迭代或者一个开关。这是由于break和continue关键词通常只中断当前循环,但若随同标签一起使用,它们就会中断循环,直到标签所在的地方。
Break和continue用标签的区别:continue继续,break完全中止。

For循环中:Break本身只能中断最内层的循环,continue也是如此,如果想在中断循环的同时退出,用return即可。

While循环:一般的continue会退回最内层循环的开头(顶部),继续执行。带标签的continue会到达标签的位置,重新进入紧接在那个标签后面的循环。一般的break会中断并跳出当前循环。带标签的break会中断并跳出标签所指的循环。
重点:java里需要使用标签的唯一理由就是因为有循环嵌套存在,而且想从多层嵌套中break或continue。

4.8 switch
Switch有时被划归为一种选择语句。根据整数表达式的值,switch语句可以从一系列代码中选出一段去执行:
switch(integral-selector){
case integral-value1: statement; break;
case integral-value2: statement; break;
case integral-value3: statement; break;
case integral-value4: statement; break;
case integral-value5: statement; break;
// ...
default: statement;
}
integral-selector:整数选择因子,一个能够产生整数值的表达式,switch将这个表达式的结果与每个integral-value(整数值)相比较,发现相符的,执行对应的语句(单一语句或多条语句,其中并不需要括号),没有发现相符的,执行default(默认)语句。
每一个case以一个break结尾,使执行流程跳转至switch主体的末尾,break是可选的。省略break,继续执行后面case语句,直到遇到一个break为止。有时候可以利用这种情况。Default语句没有break,因为执行流程到了break的跳转目的地。考虑编程风格,可以放置一个,但没有任何实际的用处。
Switch是实现多路选择(从一系列执行路径中挑选一个)的一种干净利落的方法,要求使用一个选择因子,必须是int或char那样的整数值。对于非整数类型,必须使用一系列if语句。
Java SE5新特性enum,可以减弱这种限制,enum可以和switch协调工作。

Case语句能够堆叠在一起,为异端代码形成多重匹配,只要符合多种条件中的一种,就执行那段特别的代码,注意将break语句置于特定case的末尾,否则控制流程会简单的下移,处理后面的case。

4.9 总结
本章介绍了大多数编程语言都具有的基本特性:运算、操作符优先级、类型转换以及选择和循环等等。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics