if 语句基础
if 语句用于根据一个条件的真假来决定是否执行某段代码。

语法结构
if (条件) {
// 如果条件为 true,则执行这里的代码块
}
条件:必须是一个布尔表达式,其结果只能是true或false。- 如果条件为
true,花括号 中的代码就会被执行。 - 如果条件为
false,代码块将被跳过。
示例
public class IfExample {
public static void main(String[] args) {
int age = 20;
// 检查年龄是否大于等于18
if (age >= 18) {
System.out.println("你已经成年了。");
}
System.out.println("程序结束。");
}
}
// 输出:
// 你已经成年了。
// 程序结束。
if-else 语句
当需要在条件为 true 和 false 时执行不同的代码块时,可以使用 if-else。
语法结构
if (条件) {
// 条件为 true 时执行的代码
} else {
// 条件为 false 时执行的代码
}
示例
public class IfElseExample {
public static void main(String[] args) {
int score = 59;
// 检查分数是否及格
if (score >= 60) {
System.out.println("恭喜,你及格了!");
} else {
System.out.println("很遗憾,你没有及格。");
}
System.out.println("程序结束。");
}
}
// 输出:
// 很遗憾,你没有及格。
// 程序结束。
if-else if-else 语句
当有多个条件需要依次判断时,可以使用 if-else if-else 结构,它会从上到下依次检查每个 if 或 else if 的条件,一旦某个条件为 true,就执行其对应的代码块,然后跳过整个结构的剩余部分。
语法结构
if (条件1) {
// 条件1为 true 时执行的代码
} else if (条件2) {
// 条件1为 false 且 条件2为 true 时执行的代码
} else if (条件3) {
// 条件1和2都为 false 且 条件3为 true 时执行的代码
} else {
// 所有条件都为 false 时执行的代码
}
示例
public class IfElseIfExample {
public static void main(String[] args) {
int grade = 85;
if (grade >= 90) {
System.out.println("成绩优秀:A");
} else if (grade >= 80) { // 只有当 grade < 90 时,这个条件才会被检查
System.out.println("成绩良好:B");
} else if (grade >= 60) { // 只有当 grade < 80 时,这个条件才会被检查
System.out.println("成绩及格:C");
} else { // 所有条件都不满足时执行
System.out.println("成绩不及格:D");
}
}
}
// 输出:
// 成绩良好:B
嵌套 if 语句
当一个判断的结果是另一个判断的前提时,就需要使用嵌套 if,也就是说,在一个 if 语句的代码块内部,包含了另一个 if 或 if-else 语句。
语法结构
if (外层条件) {
// 外层条件为 true 时执行的代码
if (内层条件) {
// 外层和内层条件都为 true 时执行的代码
} else {
// 外层条件为 true,但内层条件为 false 时执行的代码
}
}
// 如果外层条件为 false,整个内层的 if-else 结构都将被跳过
示例
假设我们要判断一个人是否可以献血,需要满足两个条件:

- 年龄必须在 18 到 60 岁之间。
- 体重不能低于 50 公斤。
public class NestedIfExample {
public static void main(String[] args) {
int age = 25;
double weight = 55.5;
// 外层条件:检查年龄
if (age >= 18 && age <= 60) {
System.out.println("年龄符合献血要求。");
// 内层条件:检查体重
if (weight >= 50) {
System.out.println("体重也符合要求,你可以献血。");
} else {
System.out.println("抱歉,你的体重不符合要求。");
}
} else {
System.out.println("年龄不符合献血要求。");
}
}
}
// 输出:
// 年龄符合献血要求。
// 体重也符合要求,你可以献血。
另一个示例
public class NestedIfElseExample {
public static void main(String[] args) {
int a = 10, b = 20, c = 5;
System.out.println("找出三个数中最大的一个。");
if (a > b) {
// a > b,那么最大的数只可能是 a 或 c
if (a > c) {
System.out.println("最大的数是: " + a);
} else {
System.out.println("最大的数是: " + c);
}
} else {
// a <= b,那么最大的数只可能是 b 或 c
if (b > c) {
System.out.println("最大的数是: " + b);
} else {
System.out.println("最大的数是: " + c);
}
}
}
}
// 输出:
// 找出三个数中最大的一个。
// 最大的数是: 20
最佳实践与注意事项
-
代码可读性:嵌套层次不要太深,通常超过 2-3 层就会让代码难以阅读和维护,如果逻辑复杂,可以考虑使用后面要讲的
switch语句或重构代码。 -
花括号 :即使
if或else后面只有一行代码,也强烈建议使用花括号,这可以避免因后续增加代码而导致的逻辑错误(著名的 "dangling else" 问题)。// 不推荐(容易出错) if (age > 18) System.out.println("成年"); else System.out.println("未成年"); System.out.println("这句话总会执行,但缩 misleading"); // 这句话不属于 else,但看起来像 // 推荐 if (age > 18) { System.out.println("成年"); } else { System.out.println("未成年"); } System.out.println("这句话在 if-else 结构之外"); -
布尔逻辑:复杂的嵌套
if可以用逻辑运算符(&&, , )简化,从而减少嵌套层级。 上面的献血例子可以这样写:if (age >= 18 && age <= 60 && weight >= 50) { System.out.println("你可以献血。"); } else { System.out.println("你不能献血。"); }这种写法更简洁,也更清晰,选择哪种方式取决于逻辑的复杂度和可读性,如果每个条件都有独立的、需要打印的信息,那么嵌套
if更合适;如果只是最终一个结论,那么用逻辑运算符组合更佳。
(图片来源网络,侵删)
| 类型 | 描述 | 适用场景 |
|---|---|---|
if |
单一条件判断 | 只有一种情况需要处理 |
if-else |
二选一判断 | 两种互斥的情况 |
if-else if-else |
多选一判断 | 有多个互斥的条件需要依次检查 |
嵌套 if |
一个条件是另一个条件的前提 | 处理层级分明、有依赖关系的复杂逻辑 |
掌握 if 和嵌套 if 是编写逻辑控制程序的基础,多加练习,你就能熟练运用它们来解决各种实际问题。
