本教程适用于JDK 8。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9及后续版本中更新的语言功能的摘要。
请参阅JDK发行说明,了解有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
if-then语句是所有控制流语句中最基本的语句。它告诉你的程序仅当特定的测试评估为true时才执行某个代码段。例如,Bicycle类可以只有在自行车已经在运动中时才允许刹车减少自行车的速度。applyBrakes方法的一个可能的实现如下:
void applyBrakes() { // "if"子句:自行车必须在运动中 if (isMoving){ // "then"子句:减少当前速度 currentSpeed--; } }
如果这个测试评估为false(意味着自行车没有在运动中),控制跳转到if-then语句的末尾。
此外,大括号是可选的,只要"then"子句只包含一个语句:
void applyBrakes() { // 与上面相同,但没有大括号 if (isMoving) currentSpeed--; }
是否省略大括号是个人品味的问题。省略它们可能会使代码更脆弱。如果稍后在"then"子句中添加第二个语句,常见的错误是忘记添加新需要的大括号。编译器无法捕获此类错误;你只会得到错误的结果。
if-then-else语句在"if"子句评估为false时提供了一条辅助执行路径。你可以在applyBrakes方法中使用if-then-else语句,以便在自行车不在运动中时采取某些动作。在这种情况下,动作是简单地打印一个错误消息,说明自行车已经停止。
void applyBrakes() { if (isMoving) { currentSpeed--; } else { System.err.println("自行车已经停止!"); } }
下面的程序IfElseDemo根据测试分数的值分配等级:90%或以上得A,80%或以上得B,依此类推。
class IfElseDemo { public static void main(String[] args) { int testscore = 76; char grade; if (testscore >= 90) { grade = 'A'; } else if (testscore >= 80) { grade = 'B'; } else if (testscore >= 70) { grade = 'C'; } else if (testscore >= 60) { grade = 'D'; } else { grade = 'F'; } System.out.println("等级 = " + grade); } }
程序的输出是:
等级 = C
你可能已经注意到,testscore的值可以满足复合语句中的多个表达式:76 >= 70和76 >= 60。然而,一旦条件满足,相应的语句会执行(grade = 'C';),剩下的条件就不会被评估。