“就象任何有感知的生物一样,程序必须能操纵自己的世界,在执行过程中作出判断与选择。”这是Thinking In Java的作者说的一句话。其实大多数编程语言就有自己的流程控制机制,在JAVA中,程序有三种执行流程:顺序流程、选择流程和循环流程。这三种流程在语言之间几乎是共同的。

顺序流程

顺序流程是最为常见也是最简单的流程,正如上图所示,顺序流程就是一条一条有序的程序语句,计算机会按照先后顺序执行。

顺序流程是最为常见的一种流程,常见到我们不用过多的去学习更多关于它的知识,此处,我们用过一个简单的程序去体验一下即可,这个程序记录了我们每天都在干什么事情。

例子程序:

选择流程

选择流程,又叫做分支流程。默认情况下,计算机会按照顺序执行程序,但是有些情况下,我们希望计算机根据实际情况选择不同的流程去执行,此时选择流程就能发挥作用。JAVA为我们提供了两种方式去实现选择流程:if-else语句和switch-case语句。

if-else语句

if-else语句或许是最白话文的流程控制语句,其中的else是可选的,所以它有两种语法格式:

if(条件表达式) { 语句1 语句2 语句3}或者if(条件表达式) { 语句1 语句2 语句3} else { 语句4 语句5 语句6}

说明:

1、“条件表达式”必须产生一个boolean结果。

2、“语句”可以是一个以分号(;)结尾的简单语句,也可以是一个包含在大括号{}里面的语句块。

3、当只有一条语句的时候,if语句的格式可以简化为:

if(条件表达式)

语句

但是,实践告诉我们,这种简化的方式并不是很优雅,我们极其不推荐这种写法。

我们改造一下上面“记录我们每天都在干什么”的程序来体验一下if-else语句,改造之后需要实现如下功能:起床洗漱后,如果是成年人就去上班,否则就去上学。

前面我提过,if-else语句可能是最为白话文的一种流程控制语句,因为它的语义很好理解,但是在实战中,不同if-else写法能够体现一个程序员的资深程度,甚至在面试中能够决定你的薪水等级,下面我举一个例子:写一个方法,判断给定的两个int类型参数a和b的关系(a大于b输出1、a小于b输出-1、a等于b输出0)。

新手写的:

老司机写的:

switch-case语句

switch-case语句的语法结构如下:

switch(变量){ case 变量值1: 语句1; 语句2; 语句3; break; case 变量值2: 语句4; 语句5; 语句6; break; case default: 语句7; 语句8; 语句9;}

说明:

1、变量类型只能是int、short、char、byte、String(JDK7之后)和enum

2、JVM在进行case匹配时,默认从上向下匹配:

(1) 匹配不到,程序就执行default下面的语句(语句7、语句8、语句9),例如:

(2) 当所有case都没有break时,JVM会从匹配到的那个才case开始执行后面所有的case,这就是我们常说的case穿透问题,例如:

因此,switch-case语句中一定要为每个case添加break

查看原文 >>
相关文章