4.1 if语句
分支语句的基本功能是使程序在不同的情况下,执行不同的代码。这样程序就不单只是顺序执行了,还可以按照预先设定的逻辑走各种不同的流程。Java中的分支语句有两种,if条件语句与switch多分支语句。本节将介绍if条件语句,switch多分支语句将在4.3节介绍。
4.1.1 常用语句形式
if条件语句的基本语法为:
if(<表达式>){语句序列}
圆括号中的表达式可以是任何类型的表达式,其必须满足的要求是返回值为boolean型,例如:
· 关系表达式。
· 逻辑表达式。
· boolean型变量或字面常量。
· 返回值为boolean型的赋值表达式。
提示:在C++中允许数值做布尔值使用,0为false,非0为true,但是在Java中这是不允许的。
如果表达式的返回值为true,花括号中的语句序列将执行,否则不执行。在没有花括号的情况下,if语句只对其后紧跟的一句代码起作用,其执行流程如图4-1所示。
图4-1 if语句的执行流程
下面的代码段说明了这个问题。如果X大于3,则程序打印“X大于3”。
1 if(X>3) 2 { 3 System.out.println("X大于3"); //打印 4 }
提示:建议不论if语句要控制的是语句序列还是单个语句,均使用花括号,这样有利于提高代码的可读性,避免错误,易于维护。
再请读者考察如下代码段,其会如何执行呢,还是不能编译?
1 boolean b=false; 2 if(b=true) 3 { 4 System.out.println("打印了"); 5 }
· 首先,代码没有错误,并且执行了打印语句,打印出“打印了”。
· 这是因为if语句只要求圆括号中为boolean型值,“b=true”是一个赋值语句,返回值为“true”。
· 如果需要判断b的值是否为“true”,则要使用“b==true”,是两个“=”,或者干脆使用“if(b)”也可以。
4.1.2 完整语句形式
此外,还有一种if-else形式的if条件语句,其基本语法如下:
if(<表达式>) {返回值为true时执行的语句序列} else {返回值为false时执行的语句序列}
此形式与4.1.1节形式的不同为,若圆括号中的表达式返回值为false,则将执行else下面花括号中的语句序列,其执行流程如图4-2所示。
图4-2 if-else语句的执行流程
下面的代码段说明了这个问题。
1 if(X>3) 2 { 3 System.out.println("X大于3"); //打印“X大于3” 4 } 5 else 6 { 7 System.out.println("X不大于3"); //打印“X不大于3” 8 }
· 当X大于3时,打印“X大于3”。
· 当X不大于3时,打印“X不大于3”。