Java开发手册
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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”。