条件分支(conditional branch)让程序可以根据不同情况执行不同代码。Java 使用 if、else if、else 来描述这些分支。
if
if 会判断一个条件。如果条件为 true,就执行缩进在它下面的语句块(block);如果条件为 false,就跳过这个语句块。
int age = 17;
if (age > 0 && age < 18) {
System.out.println("Minor");
}一次可能的运行结果:
请输入年龄:17
未成年人在 Java 中,缩进(indentation)不是装饰,而是语法的一部分。属于 if 的语句必须保持同一级缩进。
知识测验
题目
在 Java 中,if 语句下面的代码块靠什么表示属于 if?
if-else
if-else 用于二选一:条件为 true 时执行 if 语句块,否则执行 else 语句块。
下面用闰年(leap year)判断作为例子。一个年份是闰年,需要满足以下条件之一:
- 能被 4 整除,并且不能被 100 整除。
- 或者能被 400 整除。
int year = 2020;
boolean leap = (year % 4 == 0 && year % 100 != 0);
|| year % 400 == 0;
if (leap) {
System.out.println("Leap year");
} else {
System.out.println("Common year");
}一次可能的运行结果:
请输入年份:2020
闰年这里把复杂条件先保存到 is_leap_year,可以让 if 那一行更清晰。写真实程序时,这种方式通常比把一长串判断直接塞进 if 更好维护。
知识测验
题目
在 if-else 中,当 if 条件为 false 时会发生什么?
if-else if-else
当情况不止两种时,可以使用多分支结构if-else if-else。程序会从上到下检查条件,遇到第一个为 true 的分支就执行,并跳过后面的分支。
char c = 'T';
if (c >= 'a' && c <= 'z') {
System.out.println("Lowercase");
} else if (c >= 'A' && c <= 'Z') {
System.out.println("Uppercase");
} else if (c >= '0' && c <= '9') {
System.out.println("Digit");
} else {
System.out.println("Special character");
}一次可能的运行结果:
请输入一个字符:T
大写字母else if 的顺序很重要。你应该把更具体、更优先的条件放在前面,把兜底情况放在 else 中。
互动实验
分支路径追踪器
访问权限免费
点击一个字符,看 Java 从上到下检查条件,并停在第一个 true 分支。
'a' ≤ c ≤ 'z'
'A' ≤ c ≤ 'Z'
'0' ≤ c ≤ '9'
else
知识测验
题目
if-else if-else 中,如果第一个为 true 的分支已经执行,后面的 else if 会怎样?
动手练习
实现一个分段函数
按照不同区间给 x 赋予不同公式,最后输出 y。
- 当 x < -2 时,令 y = 0.5 * x + 3。
- 当 -2 <= x <= 2 时,令 y = 0。
- 否则令 y = Math.pow(4, x),并输出结果。