switch语句是Java编程语言中一个常用的控制语句,它可以根据不同的情况执行不同的代码块。在Java程序中,switch语句通常用于多分支情形,可以简化if语句的判断逻辑,提高代码效率。本文将深入探讨switch语句的多种用法,帮助读者更好地掌握该语句。
一、基本用法
switch语句的基本语法为:
```
switch(variable) {
case value1:
//执行代码块1
break;
case value2:
//执行代码块2
break;
...
default:
//默认代码块
break;
}
```
其中,
- variable:为变量表达式,可以是整型、字符、枚举等类型的值。
- case:为常量表达式,与variable进行比较,满足条件则执行相应代码块。
- default:为可选语句块,当所有case都不满足时,执行默认代码块。
实例代码如下所示:
```
int num = 3;
switch (num) {
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;
default:
System.out.println("非法输入");
break;
}
```
在运行上述代码时,将输出“星期三”。
二、多值情况
有时候,我们需要在多个值中选择执行相同的代码块。可以使用枚举类型或者多个case语句来实现。
1.使用枚举类型
先定义一个Enum类型:
```
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
```
接着使用switch语句:
```
Weekday day = Weekday.Wednesday;
switch (day) {
case Monday:
System.out.println("星期一");
break;
case Tuesday:
System.out.println("星期二");
break;
case Wednesday:
case Thursday:
case Friday:
System.out.println("工作日");
break;
case Saturday:
case Sunday:
System.out.println("周末");
break;
default:
System.out.println("非法输入");
break;
}
```
运行上述代码,将输出“工作日”。
2.使用多个case语句
```
int num = 3;
switch (num) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("周末");
break;
default:
System.out.println("非法输入");
break;
}
```
运行上述代码,将输出“工作日”。
三、穿透
在使用switch语句时,我们有时候需要让某个case块落空,执行下一个case块的代码,这就是所谓的“穿透”。在Java编程语言中,可以通过省略break语句来实现穿透。
示例代码如下
```
int num = 6;
switch (num) {
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;
}
```
运行上述代码,将输出“周末”。
四、特殊用法
除了上述基本用法和常见情形,switch语句还有一些特殊用法需要掌握。
1.表达式支持字符串常量
在JDK1.7以后的版本中,switch语句支持字符串常量,可以使用字符串来判断不同的情况。
示例代码
```
String str = "Java";
switch (str) {
case "Java":
System.out.println("Java编程");
break;
case "Python":
System.out.println("Python编程");
break;
default:
System.out.println("非法输入");
break;
}
```
运行上述代码,将输出“Java编程”。
2.表达式支持枚举类型
除了整型、字符型、字符串型等基本类型,switch语句还可以使用枚举类型作为表达式类型。
示例代码
```
enum Size {
SMALL,
MEDIUM,
LARGE
}
Size size = Size.MEDIUM;
switch (size) {
case SMALL:
System.out.println("小号");
break;
case MEDIUM:
System.out.println("中号");
break;
case LARGE:
System.out.println("大号");
break;
default:
System.out.println("非法输入");
break;
}
```
运行上述代码,将输出“中号”。
3.表达式支持布尔类型
在JDK1.7以后的版本中,switch语句还支持布尔类型的表达式。需要注意的是,该表达式的取值必须为true或false,也就是说,只有两种情形。
示例代码
```
boolean flag = true;
switch (flag) {
case true:
System.out.println("真");
break;
case false:
System.out.println("假");
break;
}
```
运行上述代码,将输出“真”。
五、总结
通过对Java switch语句的深入理解,读者应该已经掌握了该语句的多种用法,包括基本用法、多值情况、穿透和特殊用法等方面。在实际编程中,根据具体情况选择不同的用法,可以提高代码效率,简化代码结构,提高程序质量。