Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
if-then
语句if-then
语句是所有控制流程语句中最基本的。它告诉程序只在特定的测试结果为 true
时才会执行某段代码。例如,Bicycle
类别只有当自行车已经运动时才允许制动器降低自行车的速度。applyBrakes
方法的一种可能实现方式如下:
void applyBrakes() { // the "if" clause: bicycle must be moving if (isMoving){ // the "then" clause: decrease current speed currentSpeed--; } }
如果此测试计算为 false
(表示自行车不在运动中),则控制跳转到 if-then
语句的末尾。
此外,如果“then”子句只包含一个语句,则左大括号和右大括号是可选的:
void applyBrakes() { // same as above, but without braces if (isMoving) currentSpeed--; }
决定何时省略大括号是个人品味的问题。省略它们会使代码变得更脆弱。如果第二个语句后来被添加到 "then" 子句中,常见的错误是忘记加新要求的大括号。编译器无法捕捉到这种错误;你只会得到错误的结果。
if-then-else
语句当 "if" 子句计算为 false
时,if-then-else
语句提供执行的辅助路径。你可以在 applyBrakes
方法中使用 if-then-else
语句来采取一些行动,如果在自行车未运动时应用刹车。在这种情况下,动作是简单地打印一条错误消息,指出自行车已经停止。
void applyBrakes() { if (isMoving) { currentSpeed--; } else { System.err.println("The bicycle has already stopped!"); } }
以下程序 IfElseDemo
根据考试分数的值分配等级:A 分数为 90%或以上,B 分数为 80 分%或以上,等等。
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 = " + grade); } }
程序的输出是:
Grade = C
你可能已经注意到 testscore
的值可以满足复合语句中的多个表达式:76 >= 70
和 76 >= 60
。但是,一旦满足条件,就会执行相应的语句 (grade = 'C';)
并且不计算其余条件。