Java中的操作符、表达式和语句( 二 )


分支(选择)结构
Java中提供了两种常见的分支控制结构:if语句和switch语句 。其中if语句使用布尔表达式或者布尔值作为分支条件来进行分支控制;而switch则用户对多个值进行匹配,从而实现分支控制 。
if语句
if语句使用布尔表达式或者布尔值作为分支条件来进行分支控制 。if语句有如下三种形式:
if(logic expression) { statement...}复制代码if (logic expression) { statement...} else { statement...}复制代码if (logic expression) { statement...} else if(logic expression) { statement...} ...复制代码使用if语句的时候需要注意下面几点:

  • 当if和else后面之后一条语句的时候可以省略{},但是通常最好不要省略{}
  • 对于if语句,还有一个很容易出现的逻辑错误 。看如下的程序:
int age = 45;if (age > 20) { System.out.println("青年人");} else if (age > 40) { System.out.println("中年人");} else if (age > 60) { System.out.println("老年人");}复制代码
  • 表面上看来,上面的程序没有任何问题,但是age=45程序的运行结果却是“青年人”,这显然是有问题的!
  • **对于任何if else语句,表面上看起来else后没有任何条件,或者esle if后面只有一个条件——但是这只是表面现象,因为else的含义是"否则"——else本身就是一个条件!else的隐含条件是对前面的条件取反 。**因此,上面的代码可以修改为:
int age = 45;if (age > 60) { System.out.println("老年人");} else if (age > 40) { System.out.println("中年人");} else if (age > 20) { System.out.println("青年人");}复制代码
  • 上面的程序运行之后就能得到正确的结果,其实上面的程序就等同于下面的这段代码:
int age = 45;if (age > 60) { System.out.println("老年人");}//在原本的if条件中增加了else的隐含条件if (age > 40 && !(age > 60)) { System.out.println("中年人");}//在原本的if条件中增加了else的隐含条件if (age > 20 && !(age > 40 && !(age > 60)) && !(age > 60) { System.out.println("青年人");}复制代码