17 控制结构之switch选择语句
在上一章中,我们学习了if
条件语句,它使我们能够根据条件的布尔值来控制程序的流向。对于涉及多个条件的情况,switch
语句提供了一种更清晰、更简洁的方式来处理不同的分支。今天,我们将深入探讨switch
语句的用法及其适用场景。
概述
switch
语句是控制程序执行流的一种结构。其基本语法结构如下:
switch (表达式) {
case 值1:
// 执行语句1
break;
case 值2:
// 执行语句2
break;
// 可以有任意数量的 case
default:
// 默认执行语句
}
语法要点
- 表达式:必须是
char
、byte
、short
、int
、String
或枚举类型。 - case:每个
case
后面可以跟一个常量值,用于匹配表达式的结果。 - break语句:用于终止
switch
语句并跳出。如果没有break
,程序将继续执行后面的case
(典型的做法称为“fall-through”)。 - default关键字:可选,用于匹配所有未被
case
处理的值。
示例
让我们来看一个简单的示例,使用switch
语句来根据星期的数字显示相应的星期几名称。
public class SwitchExample {
public static void main(String[] args) {
int day = 3; // 假设今天是星期三
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入无效的天数");
}
}
}
在这个例子中,day
变量被赋值为3
,因此程序将输出星期三
。
fall-through示例
如果我们想让多个条件输出相同的结果,可以不使用break
,实现“fall-through”效果。例如,如果我们想在输出的情况下同时处理星期六
和星期日
:
public class FallThroughExample {
public static void main(String[] args) {
int day = 6; // 假设今天是星期六
switch (day) {
case 6:
case 7:
System.out.println("周末");
break;
default:
System.out.println("工作日");
}
}
}
在这里,如果day
是6
或7
,程序将输出周末
。
注意事项
- 避免遗漏break:使用
switch
时,需要仔细考虑是否需要break
语句。遗漏break
可能会导致意想不到的输出。 - 分支数:
switch
语句通常适用于条件数量较多的情况,特别是当这些条件是整数或字符类型时。当条件简单时,使用if
语句显得更为简洁。 - 使用枚举类型:在Java 5及以后的版本中,推荐使用枚举作为
switch
语句的条件,这使得代码更具可读性且减少出错的机会。
enum Color {
RED, GREEN, BLUE
}
public class EnumSwitchExample {
public static void main(String[] args) {
Color color = Color.GREEN;
switch (color) {
case RED:
System.out.println("红色");
break;
case GREEN:
System.out.println("绿色");
break;
case BLUE:
System.out.println("蓝色");
break;
default:
System.out.println("未知颜色");
}
}
}
在上面的代码中,我们使用了一个枚举类型Color
并通过switch
语句来输出相应的颜色名称。
总结
今天我们学习了switch
语句的基本用法,包括其语法结构、使用场景和注意事项。switch
语句是处理多个条件的有效工具,使得代码更为整洁可读。在实际编程中,合适地选择使用if
语句或switch
语句,将极大提高代码的可维护性和可读性。
在下一章中,我们将讨论控制结构中的循环结构,进一步增强我们的Java编程技能。