![Java与Android移动应用开发:技术、方法与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/659/26793659/b_26793659.jpg)
5.2 if-else语句和?:运算符
if-else语句可以根据不同的条件执行相应的代码,基本的应用格式如下。
if (<条件1>) { <语句块1> }else if (<条件2>) { <语句块2> } else { <语句块n> }
此语句结构中,如果<条件1>成立执行<语句块1>;如果<条件2>成立执行<语句块2>;如果所有条件不成立,则执行<语句块n>。执行流程如图5-1所示。
![](https://epubservercos.yuewen.com/F132C1/15253386905235706/epubprivate/OEBPS/Images/Figure-P65_53249.jpg?sign=1739308542-igqVgJwZUj49P6U4Byd3Rr64FnZsV576-0-c39668ed54fb89ab403a5ef47c8b62e3)
图5-1 if语句的执行流程
使用if语句时,至少需要指定一个条件,也就是if()中的条件。else if及相应的语句块可以有多个,也可以没有。而else语句可以有零个或一个,使用时应放在所有else if语句结构的后面。
下面的代码会根据分数显示成绩的等级。
![](https://epubservercos.yuewen.com/F132C1/15253386905235706/epubprivate/OEBPS/Images/Figure-P65_209774.jpg?sign=1739308542-pNIALnymRuFOm7fi6toeLYpqM8Lx2Zwf-0-e0ba0da0abe20b0070a089349a72c987)
代码中,当points小于60时显示“不及格”;当points大于等于60且小于80时显示“良”;当points大于等于80且小于90时显示“好”;最后,当points大于等于90时显示“优”。测试中,可以修改points变量的值并观察运行结果,充分考虑代码执行的逻辑。
开发工作中,判断条件的设定有时会比较复杂。如果有多个条件,还可使用逻辑运算符来组合,例如,下面的代码会判断一个年份是否为闰年。
![](https://epubservercos.yuewen.com/F132C1/15253386905235706/epubprivate/OEBPS/Images/Figure-P65_209775.jpg?sign=1739308542-kijK83JMLy2qY0QkiZ7880LF5V1n1M1q-0-a5bf5ada0b0c519d19a4967f6ca4b72c)
代码中,当if和else语句块中只一条语句时,可以省略{和}符号。下面再单独看一下闰年的判断条件。
year % 400 == 0 || (year % 100 !=0 && year % 4 ==0)
这里,满足闰年有以下两种可能。
□ 当年份能够被400整除时为闰年,使用年份除以400的余数来判断。
□ 当年份不能被100整除但能够被4整除时为闰年。
请注意,这里使用圆括号来设置运算的顺序。开发工作中,使用圆括号指定运算的优先级,可能要比运算符默认的优先级可靠,为什么呢?原因很简单,有多少开发人员能保证可以完全记住运算符优先级,而且永远不会犯错误呢?
使用if语句结构时,在极简情况下,还可以不包含任何的else if和else语句,如下面的代码所示。
![](https://epubservercos.yuewen.com/F132C1/15253386905235706/epubprivate/OEBPS/Images/Figure-P66_209781.jpg?sign=1739308542-9nbKav4AyU7uDd2bBEN6qDtSEIEFkkWw-0-5eb4fa4e5f02eb44436ca8a49301d02e)
接下来,如何显示信息呢?可以借助?:运算符,如下面的代码所示。
![](https://epubservercos.yuewen.com/F132C1/15253386905235706/epubprivate/OEBPS/Images/Figure-P66_209782.jpg?sign=1739308542-WrvADLv7JeDMESWieQitaQ6fn5bPudey-0-13932a4384f895981910860c60deb548)
Java中,?:运算符的应用格式如下。
<表达式1> ? <表达式2> : <表达式3>
其中,<表达式1>的结果应该是boolean类型的,其结果为true时返回<表达式2>的值,为false时返回<表达式3>的值。