5.3 条件语句
为了编写有用的程序,几乎都需要检查添加并采取相应的措施。条件语句(conditional statement)提供了这样的功能。if 语句是 Java 中最简单的条件语句:
if (x > 0) {System.out.println("x is positive");}
括号内的表达式被称为条件,如果它为 true,那么将执行大括号内的语句,否则将跳过这个代码块。括号内的条件可以是任何 boolean 表达式。
还有一种包含两种可能性(分别由 if 和 else 标识)的条件语句。这些可能性称为分支(branch),由条件决定将执行哪个分支:
if (x % 2 == 0) {System.out.println("x is even");} else {System.out.println("x is odd");}
如果 x 除以 2 的余数为 0,则 x 为偶数,因此上述代码片段显示相应的消息。如果不满足这个条件,则执行第二条打印语句。由于要么满足条件,要么不满足条件,因此只有一个分支会被执行。
对于只有一条语句的分支来说,大括号是可选的,因此前一个示例可以写成下面这样:
if (x % 2 == 0)System.out.println("x is even");elseSystem.out.println("x is odd");
然而,即便大括号是可有可无的,最好不要省略,这样可避免在 if 或 else 代码块中添加语句时因忘记加大括号而导致错误。
if (x > 0)System.out.println("x is positive");System.out.println("x is not zero");
这些代码没有正确地缩进,因此极具误导性。由于省略了大括号,只有第一个 println 是 if 语句的一部分。在编译器看来,上述代码实际上是以下这样的:
if (x > 0) {System.out.println("x is positive");}System.out.println("x is not zero");
因此,在任何情况下都将执行第二条 println 语句。即便是经验丰富的程序员也会犯这样的错误,只要在网上搜索 goto fail 就会有所了解了。
