选择语句
在程序设计时,经常需要使用选择结构在结构在程序中完成逻辑判断和选择功能,这就需要用到选择语句。Java中的选择语句包括if语句、if-else语句和switch语句。
if选择语句
if语句只有一个选择的语句结构,所以也叫单分支选择结构,执行过程如下:
- 对if后面括号里的条件表达式进行判断。
- 如果条件表达式的值为true,就执行表达式后面的语句或后面大括号里的多条语句。
- 如果条件表达式的值为false,则跳过if语句,执行下一条语句。
if(条件表达式)
语句
if(条件表达式)
{
一条或多条语句
}
if-else双分支选择语句
执行过程:
- 对if后面括号里的条件表达式进行判断。
- 如果条件表达式的值为true,就执行语句1或语句块1。
- 如果条件表达式的值为false,就执行语句2或语句块2。
if(条件表达式)
语句1
else
语句2
if(条件表达式)
{
语句块1
}
else
{
语句块2
}
if-else-if多分支选择语句
if-else-if语句执行的过程如下。
- 对if后面括号里的条件表达式进行判断。
- 如果条件表达式的值为true,就执行语句块1。
- 否则,对条件表达式2进行判断。如果条件表达式的值为true,就执行语句块2。
- 否则,依此类推。
- 如果所有条件表达式的值都为false,最后执行语句块n。
if(条件表达式1)
{
语句块1
}
else if(条件表达式2)
{
语句块2
}
...
else if(条件表达式n-1)
{
语句块n-1
}
else
{
语句块n
}
需要注意的是,最后的else语句可以省略,那么当所有的条件表达式都不成立时,什么也不执行。
当使用选择语句嵌套时需注意:else总是和离它最近的if进行匹配,所以在if语句嵌套时,尽可能使用大括号划分逻辑关系,避免出现问题。
switch多分支开关语句
当选择结构的分支越多时,if-else-if语句就会变得越来越难懂。Java提供了另一种多分支语句——switch语句。switch语句是多分支的开关语句。它的语法格式如下。
switch(表达式)
{
case常量表达式1:语句组1;
[break;]
...
case常量表达式n-1:语句组n-1;
[break;]
default:语句块n
}
说明:
- switch后面的表达式值的数据类型可以是字符型(char)、字节型(byte)、短整型(short)或者整型(int),但不可以是布尔型(boolean)、长整型(long)、浮点型(float、double)。
- case后面的常量表达式的值的类型,必须与switch后面的表达式值的类型相匹配,而且必须是常量表达式或直接字面量。
- break语句可以省略。如果省略,那么程序会按顺序执行switch中的每一条语句,直到遇到右大括号或break为止。
- 语句块可以是一条语句或多条语句,但不需要使用大括号括起来。
- case分支语句和default语句都不是必需的,可以省略。
switch语句执行的过程如下。
(1)将switch表达式的值与各个case后面的常量表达式的值一一进行比较。
(2)当表达式的值与某个case分支的值相等时,程序执行从这个case分支开始的语句组。
(3)如果没有任何一个case分支的值与switch表达式的值相匹配,并且switch语句含有default分支语句,则程序执行default分支中的语句组。
(4)直到遇到break语句或右大括号,结束switch语句。
if选择语句与switch开关语句的区别
从功能上来讲,if语句和switch语句都是多分支选择语句,在通常情况下,对于多分支选择结构,使用if语句和使用switch语句从作用上讲是相同的。但是在实际编写程序时,一般遵循下面的使用原则。
- 如果分支的层次不超过三层,那么通常使用if-else-if语句;否则,使用switch语句。
- 如果条件判断语句是对一个变量是否属于一个范围进行判断,如“a>60 && a<89”,这时要使用if-else-if语句。
- 如果是对同一个变量的不同值做条件判断,既可以使用if-else-if语句,也可以使用switch语句。但建议优先使用switch语句,其执行效率相对高一些。