本教程适用于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';),剩下的条件就不会被评估。