在 Java 编程中,条件控制语句用于控制程序的执行路径,决定根据某些条件来选择执行某段代码或跳过某段代码。它们是 Java 编程的重要组成部分,帮助开发者根据不同的输入、状态或数据流来编写更加灵活和动态的代码。在本文中,我们将详细讲解 Java 中的几种条件控制语句:if-else
、else-if
和 switch
,并通过示例帮助理解这些概念。
1. if-else
语句
if-else
语句用于根据条件判断来选择不同的执行路径。当条件为真时,执行 if
代码块或者else if
;当条件为假时,执行 else
代码块。
☑️if
格式:
if (关系表达式) {
语句体;
}
🔶执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体
③如果关系表达式的值为false就不执行语句体
④继续执行后面的语句内容
🏷️例子:
int age = 18; if (age >= 18) { System.out.println("Adult"); } if (age < 18) { System.out.println("Not an adult"); } //输出结果为Adult
❗注意:
-
如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。
boolean flag = true; if (flag) { System.out.println("判断为真"); }
-
如果大括号中的语句体只有一条,那么大括号可以省略不写。如果大括号省略了,那么if或者else只能控制距离他最近的那一条语句。但是建议还是加上大括号,代码可读性更强
int a = 1; //如果大括号中的语句体只有一条,那么大括号可以省略不写 if (a == 1) System.out.println("1"); //但是还是建议加上大括号 if (a == 1) { System.out.println("1"); }
☑️if-else
格式:
if (关系表达式) {
语句体1;
} else {
语句体2;
}
🔶执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体1
③如果关系表达式的值为false就执行语句体2
④继续执行后面的语句内容
🏷️例子:
int age = 18; if (age >= 18) { System.out.println("Adult"); } else { System.out.println("Not an adult"); } //输出结果为Adult
☑️else if
格式:
if (关系表达式1) {
语句体1;
} else if (关系表达式2) {
语句体2;
} else if (关系表达式3) {
语句体3;
}
…
else {
语句体n+1;
}
🔶执行流程:
①首先计算关系表达式1的值
②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
④…
⑤如果没有任何关系表达式为true,就执行语句体n+1。
🏷️例子:
int score = 75; if (score >= 90) { System.out.println("A"); } else if (score >= 80) { System.out.println("B"); } else if (score >= 70) { System.out.println("C"); } else { System.out.println("F"); }
❗注意:
末尾的else如果不需要可以省略不写。
☑️
使用场景
当需要基于一个或多个逻辑条件来执行不同的代码路径时使用。
通常用于处理简单的逻辑分支,如分数等级评定。
2. switch-case
语句
🔶执行流程:
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
☑️
传统格式:
switch (表达式) {
case 值1:
// 如果表达式的值等于值1,执行这里的代码
break;
case 值2:
// 如果表达式的值等于值2,执行这里的代码
break;
default:
// 如果没有匹配的case,执行这里的代码
}
🔶流程图:
开始
↓
获取表达式值
↓
判断是否等于值1
| 是 -> 执行代码块1
| 否 -> 判断是否等于值2
| 是 -> 执行代码块2
| 否 -> ... -> 执行默认代码块
↓
结束
🏷️示例:
int day = 2; switch (day) { case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; default: System.out.println("Invalid day"); }
☑️
新型格式(Java 14及以上版本):
var result = switch (表达式) {
case 值1 -> "值1的处理结果";
case 值2 -> "值2的处理结果";
// 更多case...
default -> "默认处理结果";
};
🔶流程图:
开始
↓
获取表达式值
↓
匹配case值
| 匹配成功 -> 执行对应代码块
| 匹配失败 -> 执行默认代码块
↓
结束
🏷️示例:
String dayOfWeek = "Wednesday"; var dayResult = switch (dayOfWeek) { case "Monday" -> "今天是周一"; case "Tuesday" -> "今天是周二"; case "Wednesday" -> "今天是周三"; default -> "不是这三天中的一天"; }; System.out.println(dayResult);
☑️
使用场景
当需要根据变量的不同取值来选择不同的执行路径时使用。
特别适用于处理byte、short、int、char、枚举、String类型或预定义的几个可能值。
有限值需要任选其一的情况用switch可以让语句更简洁可读。
case后面的值只能是字面量不能是变量。
🔶switch
和else if
使用场景的区别
- 当我们需要对一个范围进行判断的时候,用
else if
- 当我们把有限个数据列举出来,选择其中一个执行的时候,用
switch
语句
简单记忆:记住switch
语句使用场景,其他都考虑else if
❗注意:
default可以放在任意位置,也可以省略
但是都不建议:
- default放在其他位置会导致代码混乱,可读性差;
- 省略会导致没有匹配上结果就会结束
不写break会引发case穿透现象
switch (week){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default:
System.out.println("没有这个星期");
break;
}
3. 表格总结
语句 | 用法 | 适用场景 |
---|---|---|
if-else | 用于判断一个布尔表达式并根据条件执行代码块 | 用于范围判断、逻辑复杂的多条件分支 |
else-if | 用于多层判断,从上到下依次检查条件是否成立 | 需要处理多条件且逻辑稍微复杂的场景 |
switch | 基于一个表达式的值,执行匹配的 case 代码块 | 用于处理有限个具体值的比较,如整型、字符型 |
4. 结论
在 Java 中,条件控制语句是编写动态程序的基础,能够帮助开发者根据输入或状态做出决策。if-else
和 else-if
语句提供了灵活的多条件判断,而 switch
语句则在处理有限个具体值的情况下更加简洁。通过合理选择和使用这些条件控制语句,可以使代码更加高效、清晰,并且容易维护。