2017-07-12 11:04

 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/kokoxu/b-128.html

流程控制

不论哪一种编程语言,都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构用于实现根据条件来选择性的执行某段代码,循环结构则用于实现根据循环条件重复的执行某段代码。java同样提供了这两种流程控制的语法,java提供了 if 和switch 两种分支语句,并提供了while 、do while 和for 三种循环语句。除此之外,jdk5还提供了一种新的循环,foreach循环,能以更简单的方式来遍历集合、数组的元素。java还提供了break和continue来控制程序的循环结构。

顺序结构

任何编程语言中最常见的程序结构几十顺序结构。顺序结构就是程序从上往下逐行的执行,中间没有任何判断和跳转。
如果main方法的多行代码之间没有任何流程控制,则程序总是从上往下依次执行,排在前面的代码先执行,排在后面的代码后执行。这意味着,如果没有流程控制,java方法里的语句是一个顺序执行流,从上向下依次执行每条语句。

分支结构

java提供了两种常见的分支控制结构:if语句和switch语句,其中if语句使用布尔表达式作为分支条件来进行分支控制,而switch语句则用于多个整型值进行匹配,从而实现分支控制。
  • if 条件语句 
    if语句使用布尔表达式或布尔值作为分支条件来进行分支控制。if 语句有下面三种形式 
    1499828503143389.png

    在上面的if语句的三种形式中,放在if之后括号里的只能是一个逻辑表达式,即这个表达式的返回值只能是true或false,第二种形式和第三种形式是相通的。if()、else if() 和else 后面的大括号括起来的多行代码被称为代码块,一个代码块通常被当成一个整体来执行(除非运行过程中遇到return、break、continue等关键字,或者遇到了异常),因此这个代码块也被称为条件执行体。

    1499828543439853.png

    如果if()、else if 和else后的代码块只有一行语句时,则可以省略大括号,因为单行语句本身就是一个整体,无需用大括号来把它们定义成一个整体。

    1499828555453031.png

    通常建议不要省略大括号,即使条件执行体只有一行代码,也保留大括号会有更好的可读性,而且保留大括号会减少发生错误的可能。
    对于if语句,还有一个很容易导致出现错误的逻辑错误,这个逻辑错误并不属于语法问题。我们来看代码

    1499828610807009.png

    1499828618693066.png

    表面上看起来,上面的程序没有任何问题,年龄大于20是青年,大于40是中年,大于60是老年。但是运行一下看结果。发现输出的是青年,而实际上希望45岁应判断为中年,这显然出现了一个问题。
    对于任何的if else语句,表面上看起来else后没有任何条件,或者else if后只有一个条件,但这不是真相,因为else的含义是“否则” else本身就是一个条件,这也是把if、else后代码块统称为条件执行体的原因,else的隐含条件是对前面条件取反。

    为了达到正确的目的,可以把程序改成为如下形式: 
    1499828639657031.png 
    上面的判断逻辑才是实际希望的判断逻辑。因此,当使用if else 语句进行流程控制时,一定不要忽略了else所带来的隐含条件。 
    如果每次都去计算if条件和else条件的交集也是一件非常繁琐的事情,为了避免这种情况,在使用if else语句时有一条基本的规则,总是优先把包含返回小的条件放在前面处理。如age>60和age>20两个条件,明显age>60的范围更小,所以应该先处理age>60的情况。


好的,我们今天就先介绍到这里 下章我们继续讲解。


 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/kokoxu/b-128.html

评论