Thinking In Java笔记(第四章 控制执行流程)

第四章 控制执行流程

Java中使用了C的所有流程控制语句。在Java中涉及的关键字包括if-else,while,do-while,for,return,break,continue以及选择语句switch。然而Java不支持goto语句(该语句引起了许多的反对意见),但是Java仍然可以类似goto那样跳转。

4.1 True和False

所有的条件语句都利用条件表达式的真假来决定执行的路径。Java中不允许我们将一个数字作为boolean值使用,虽然C和C++中是允许的(“非零”为真,”零”为假)。

4.2 if-else

if-else语句是控制程序流程最基本形式。其中else是可选的。有如下两种使用的方式:

if(boolean-exp){…}if(boolean-exp){…} else {…}4.3迭代

while,do-while,for用来控制循环,有时将她们划分为迭代语句(iteration statement)。语句会重复执行直到条件满足或者条件不满足。while语句的格式如下:

while(boolean-exp){…}

再循环刚开始的时候,会计算一次boolean-exp的值,,而在语句的下次迭代开始前会再计算一次。

4.3.1 do-while

do-while和while唯一区别就是do-while中的语句至少会执行一次。

4.3.2 for循环

for循环在第一次迭代之前要进行初始化,之后会进行条件测试,每次循环结束之后都以某种方式步进。

4.3.3 逗号操作符

逗号操作符(不是逗号分隔符),Java中唯一用到逗号操作符的地方就是for循环的控制表达式。在控制表达式的初始化和步进控制部分,可以使用一系列的逗号分隔的语句;

4.4 Foreach语法

Java SE5引入了一种更加简洁的for语句用于数组和容器,能简易的遍历每一项。

public class Test{public static void main(String[] args){Random rand = new Random(47);float f[] = new float[10];for(int i = 0; i < 10; i ++)f[i] = rand.nextFloat();for(floar x : f)System.out.println(x);}}

foreach语句能试用于任何的实现了Iterable接口的对象。使用foreach不仅在录入代码时可以节省时间,更重要的是,它阅读起来也要容易得多,它阅读起来也要容易得多,阅读起来能让人明白正在做什么,而不是类似于for(int i=0; i<100;i++)的告诉人如何做的细节。

4.5 return

Java中有如下几个关键词表示无条件跳转,return、break、continue和一种类似于其他语言中goto的标记。

return有两方面的用途:

一方面指定一个方法返回什么值(假设它没有void返回值)另一方面会导致当前的方法退出,并返回那个值。4.6 break和continue

在任何迭代语句的主体部分,都可用break和continue控制循环的流程。break关键字用于强行退出循环,不执行循环中剩余的部分。continue则是停止当前执行的一次循环,直接开始下一次的循环迭代。下面的例子:

public class Test {public static void main(String[] args) {for(int i=0; i<100; i++) {if(i == 74) break;if(i%9 != 0)continue;System.out.println(i + ” “);}}}

上面的输出结果为:

0 9 18 27 36 45 54 63 72

到74的时候就break出来了,而当i不能被9整除时,continue(也就是继续下一次循环)。

4.7 臭名昭著的goto

goto语句实际上起源于汇编程序的程序控制: 若条件A成立,则跳到这里;否则跳到那里。如果阅读由编译器最终生成的汇编代码,就会发现程序控制里面包含了很多的跳转。(Java编译器生成它自己的”汇编代码”,运行在Java虚拟机上面,而不是直接在cpu硬件上面的)。

goto是在源码级上面的跳转。不多介绍了,最好不用,用了会使源代码变的很难阅读。

4.8 switch

switch有时也被规划成一种选择语句。根据整数表达式的值,switch语句可以从一系列代码中选出一段去执行,格式如下:

switch(integeral-selector) {case integral-value1 :statement1 ;break;case integral-value2 :statement2 ;break;case integral-value3 :statement3 ;break;default:statement4;}

integeral-selecotr是一个能够产生整数值的表达式,switch能将这个结果与每个integral-value(整数值)相比较。若发现相符的,就执行下面对应的语句。若没发现相符的语句,就执行default中包含的语句块。

每个case最后都有一个break;语句这样可以使执行流程跳转到switch主体的末尾。如果case中没有break,则会继续执行后面的case语句,不管是否满足case,直到遇见第一个break;为止。

朋友,为了幸福,请你保持一副热爱生活的心肠,

Thinking In Java笔记(第四章 控制执行流程)

相关文章:

你感兴趣的文章:

标签云: