Java与Android移动应用开发:技术、方法与实践
上QQ阅读APP看书,第一时间看更新

5.2 if-else语句和?:运算符

if-else语句可以根据不同的条件执行相应的代码,基本的应用格式如下。

    if (<条件1>) {
        <语句块1>
    }else if (<条件2>) {
        <语句块2>
    } else {
        <语句块n>
    }

此语句结构中,如果<条件1>成立执行<语句块1>;如果<条件2>成立执行<语句块2>;如果所有条件不成立,则执行<语句块n>。执行流程如图5-1所示。

图5-1 if语句的执行流程

使用if语句时,至少需要指定一个条件,也就是if()中的条件。else if及相应的语句块可以有多个,也可以没有。而else语句可以有零个或一个,使用时应放在所有else if语句结构的后面。

下面的代码会根据分数显示成绩的等级。

代码中,当points小于60时显示“不及格”;当points大于等于60且小于80时显示“良”;当points大于等于80且小于90时显示“好”;最后,当points大于等于90时显示“优”。测试中,可以修改points变量的值并观察运行结果,充分考虑代码执行的逻辑。

开发工作中,判断条件的设定有时会比较复杂。如果有多个条件,还可使用逻辑运算符来组合,例如,下面的代码会判断一个年份是否为闰年。

代码中,当if和else语句块中只一条语句时,可以省略{和}符号。下面再单独看一下闰年的判断条件。

    year % 400 == 0 || (year % 100 !=0 && year % 4 ==0)

这里,满足闰年有以下两种可能。

□ 当年份能够被400整除时为闰年,使用年份除以400的余数来判断。

□ 当年份不能被100整除但能够被4整除时为闰年。

请注意,这里使用圆括号来设置运算的顺序。开发工作中,使用圆括号指定运算的优先级,可能要比运算符默认的优先级可靠,为什么呢?原因很简单,有多少开发人员能保证可以完全记住运算符优先级,而且永远不会犯错误呢?

使用if语句结构时,在极简情况下,还可以不包含任何的else if和else语句,如下面的代码所示。

接下来,如何显示信息呢?可以借助?:运算符,如下面的代码所示。

Java中,?:运算符的应用格式如下。

    <表达式1> ? <表达式2> : <表达式3>

其中,<表达式1>的结果应该是boolean类型的,其结果为true时返回<表达式2>的值,为false时返回<表达式3>的值。