在 Java 中,switch
语句是用于基于不同条件执行不同代码块的一种控制流语句。与 if-else
语句相比,switch
更适合用于多个值的条件判断。它的语法简单、执行效率较高,尤其在处理多个可能值时,switch
提供了更清晰和结构化的代码。
1. Java 中的 switch 语句的基本用法
基本语法结构如下:
switch (表达式) {
case 值1:
// 如果表达式的结果等于值1,执行此代码块
break; // 退出 switch 语句
case 值2:
// 如果表达式的结果等于值2,执行此代码块
break;
default:
// 如果表达式的结果没有匹配的值,执行此代码块
break;
}
switch
:用于判断的条件,通常是一个表达式。case
:每个case
代表一个可能的值,switch
语句会根据该值来执行相应的代码块。break
:结束当前的switch
语句。如果没有break
,则会继续执行下一个case
中的代码,这被称为“穿透”行为(fall-through)。default
:是一个可选项。如果所有的case
都不匹配,default
语句中的代码会执行。
2. 三种 switch
语句的语法
(1)传统的 switch
语句(用于 int
、char
、String
等类型)
这是一种常见的 switch
使用方式。你可以根据整数值、字符或者字符串值来判断。
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
default:
System.out.println("Invalid day");
}
解释:根据变量 day
的值来选择合适的输出,day == 3
会输出 "Wednesday"
。
(2)switch
语句与字符(char
)
switch
也可以使用字符类型来进行判断:
char grade = 'A';
switch (grade) {
case 'A':
System.out.println("Excellent");
break;
case 'B':
System.out.println("Good");
break;
case 'C':
System.out.println("Fair");
break;
default:
System.out.println("Invalid grade");
}
解释:根据字符 grade
的值输出相应的评价。
(3)switch
语句与字符串(String
)
Java 7 及其以上版本支持 switch
使用 String
类型进行条件判断。这是一个非常常见的应用场景:
String color = "Red";
switch (color) {
case "Red":
System.out.println("The color is Red");
break;
case "Green":
System.out.println("The color is Green");
break;
case "Blue":
System.out.println("The color is Blue");
break;
default:
System.out.println("Unknown color");
}
解释:根据字符串 color
的值选择输出内容。
3. switch
支持的参数类型
在 Java 中,switch
语句支持以下几种数据类型:
byte
(8 位带符号整数)short
(16 位带符号整数)char
(16 位字符类型)int
(32 位带符号整数)String
(Java 7 及以上支持)enum
(Java 5 及以上支持)
switch
语句不支持以下数据类型:
long
:switch
不支持long
类型。即使是long
的包装类Long
也不行。float
和double
:switch
不能使用浮点数类型进行判断。boolean
:switch
不能使用布尔值进行判断。
4. 示例:switch
与 enum
类型
enum
类型是 Java 中的一个重要数据类型,switch
可以用来判断 enum
类型的常量值:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Day today = Day.WEDNESDAY;
switch (today) {
case MONDAY:
System.out.println("Start of the work week");
break;
case WEDNESDAY:
System.out.println("Midweek day");
break;
case FRIDAY:
System.out.println("End of the work week");
break;
default:
System.out.println("Weekend");
}
解释:使用 enum
类型的值来判断输出。在这里,如果 today
是 WEDNESDAY
,输出将是 "Midweek day"
。
5. switch
语句的改进:Java 12 引入的 “switch expressions”
从 Java 12 开始,switch
被增强为一个表达式,不仅可以执行动作,还可以返回值。
int dayOfWeek = 3;
String result = switch (dayOfWeek) {
case 1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
case 4 -> "Thursday";
case 5 -> "Friday";
case 6 -> "Saturday";
case 7 -> "Sunday";
default -> throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeek);
};
System.out.println(result);
解释:在这种改进的 switch
中,->
代表表达式的结果。这个语法简洁并且能够返回一个值。与传统的 switch
相比,新的 switch
语句可以直接返回一个值,并且每个 case
分支后不再需要 break
语句。
总结
switch
语句是一种便捷的多条件选择结构,适用于数值、字符、字符串等类型的判断。switch
支持int
、char
、String
和enum
等类型,并且从 Java 7 开始支持String
类型。- Java 12 引入了
switch expressions
,使得switch
不仅可以执行动作,还可以返回值。
发表回复