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 总结
本章介绍了大多数编程语言都具有的基本特性:运算、操作符优先级、类型转换以及选择和循环等等。
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 总结
本章介绍了大多数编程语言都具有的基本特性:运算、操作符优先级、类型转换以及选择和循环等等。
发表评论
-
Java编程思想第四版——第二十一天
2012-05-04 12:56 5452012-05-04 163-170/913 Java编 ... -
Java编程思想第四版——第二十天
2012-05-03 13:45 6542012-05-03 158-163/913 Java编程思 ... -
Java编程思想第四版——第十九天
2012-05-02 11:08 7772012-05-02 149-158/913 Java编程思 ... -
Java编程思想第四版——第十八天
2012-04-27 13:12 9652012-04-27 142-149/913 Java编 ... -
Java编程思想第四版——第十七天
2012-04-25 11:18 7142012-04-25 138-142/913 Java编程思 ... -
Java编程思想第四版——第十六天
2012-04-24 13:50 7142012-04-24 131-138/913 Java编 ... -
Java编程思想第四版——第十五天
2012-04-23 17:14 7202012-04-23 121-131/913 Java编程思 ... -
Java编程思想第四版——第十四天
2012-04-19 11:28 5942012-04-19 118-121/913 Java编程思 ... -
Java编程思想第四版——第十三天
2012-04-18 12:08 6402012-04-18 108-118/913 Java编 ... -
Java编程思想第四版——第十一天
2012-04-05 12:21 7832012-04-05 Java编程思想第四版——第十一天 ... -
Java编程思想第四版——第十天
2012-03-31 12:03 5302012-03-31 97-102/913 Java编程思想 ... -
Java编程思想第四版——第九天
2012-03-30 14:59 5982012-03-30 80-97/913 Java编程思想第 ... -
Java编程思想第四版——第八天
2012-03-29 12:09 4552012-03-29 76-80/913 3.6 自动递增和 ... -
Java编程思想第四版——第七天
2012-03-28 12:24 6312012-03-28 70-76/913 昨天找 ... -
Java编程思想第四版——第六天
2012-03-27 13:02 5002012-03-27 66-70/913 最近两 ... -
Java编程思想第四版——第五天
2012-03-23 15:09 9182012-03-23 60-66/913 2.5 方法、参数 ... -
Java编程思想第四版——第四天
2012-03-22 12:41 5582012-03-22 54-60/913 第二章 ... -
Java编程思想第四版——第三天
2012-03-21 12:40 5402012-03-21 47-54/913 1.12 并 ... -
Java编程思想第四版——第二天
2012-03-20 13:54 711今天本来以为进度可以 ... -
Java编程思想第四版——第一天
2012-03-19 15:57 750Java已经丢手一年了 ...
相关推荐
Java编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZF
基于java编程思想(Thinking in java, TIJ)的教学课件,教学设计请见http://blog.csdn.net/Florianjin
我制作的java编程思想的教学课件,紧跟着“java编程思想教学材料——开端”
很有名的一本书—————Java编程思想【第4版】习题答案
实训项目八:JAVA网络编程(csdn)————程序
基于java编程思想(Thinking in java, TIJ)的教学PPT,教学设计请见http://blog.csdn.net/Florianjin
Java之SSH深入浅出——精简剖析
java8函数式编程(csdn)————程序
Java 基本语法(四)——字串和数组 Java 基本语法(四)——字串和数组
java 面向对象编程(csdn)————程序
非常全面的java教程,包含了java的基础技术,还有数据库,网络,GUI方面的知识,非常好的一个教程
计算机软件开发的Java编程语言及应用——评《Java编程方法论》.pdf
做坦克游戏,学Java编程(四)——添加炮弹类.pdf
小贝程序员生活\课件\java\java人家\Java第四十一——四十二讲总结-设计模式.doc 小贝程序员生活\课件\java\java人家\Java第四十一——四十二讲总结-设计模式.doc 小贝程序员生活\课件\java\java人家\Java第四十一...
——————————————————————————————————————————————
《Java 工程师的编程逻辑》——用 java 看计算机世界。
利用Java进行疫情大数据分析——“Java面向对象程序设计”课程实践教学设计研究.pdf