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;为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值