Java 中的 switch 语句允许将一个变量与一系列的值进行比较。每一个值被称为一个 case,并且被 switch 操作的变量会与每个 case 进行比较。
当需要多个 if-else 语句时,可以使用 switch 语句。它可以包含多个带有 case 值的代码块,并根据匹配的 case 值执行其中一个代码块。
Java switch 语句的语法
switch(表达式) {
case 值 :
break;
case 值 :
break;
default :
}
规则
以下规则适用于 switch 语句:
-
在
switch 语句中使用的变量只能是整数类型、可以转换成整数的类型(如 byte、short、char)、字符串类型和枚举类型。
-
switch 内部可以包含任意数量的 case 语句。每个 case 后跟一个值和一个冒号。
-
case 的值必须与 switch 中的变量具有相同的数据类型,并且必须是一个常量或字面量。
-
如果
switch 操作的变量等于某个 case,那么该 case 后的语句将被执行,直到遇到 break 语句。
-
当遇到
break 语句时,switch 结束,并且控制流跳转到 switch 语句后面的下一条语句。
-
并不是每个
case 都需要包含 break。如果没有 break 出现,控制流将继续执行后续的 case 直到遇到 break。
-
switch 语句可以有一个可选的 default case,它应该出现在 switch 的最后。default case 可以用于在没有 case 为真的情况下执行某个任务。default case 不需要 break。
流程图

示例
示例 1
在这个例子中,我们展示了一个基于字符的 switch 语句的用法。我们创建了一个变量 grade。根据 grade 的值,每个 case 都会被检查。如果一个 case 被满足并且存在 break 语句,那么后面的 case 将不会被检查。
public class Test {
public static void main(String args[]) {
char grade = 'C';
switch(grade) {
case 'A' :
System.out.println("Excellent!");
break;
case 'B' :
case 'C' :
System.out.println("Well done");
break;
case 'D' :
System.out.println("You passed");
case 'F' :
System.out.println("Better try again");
break;
default :
System.out.println("Invalid grade");
}
System.out.println("Your grade is " + grade);
}
}
输出
Well done
Your grade is C
示例 2
在这个例子中,我们展示了一个基于整数的 switch 语句的用法。我们创建了一个变量 grade。根据 grade 的值,每个 case 都会被检查。如果一个 case 被满足并且存在 break 语句,那么后面的 case 将不会被检查。
public class Test {
public static void main(String args[]) {
int grade = 3;
switch(grade) {
case 1 :
System.out.println("Excellent!");
break;
case 2 :
case 3 :
System.out.println("Well done");
break;
case 4 :
System.out.println("You passed");
case 5 :
System.out.println("Better try again");
break;
default :
System.out.println("Invalid grade");
}
System.out.println("Your grade is " + grade);
}
}
输出
Well done
Your grade is 3
示例 3
在这个例子中,我们展示了一个基于字符串的 switch 语句的用法。我们创建了一个变量 grade。根据 grade 的值,每个 case 都会被检查。如果一个 case 被满足并且存在 break 语句,那么后面的 case 将不会被检查。
public class Test {
public static void main(String args[]) {
String grade = "C";
switch(grade) {
case "A" :
System.out.println("Excellent!");
break;
case "B" :
case "C" :
System.out.println("Well done");
break;
case "D" :
System.out.println("You passed");
case "F" :
System.out.println("Better try again");
break;
default :
System.out.println("Invalid grade");
}
System.out.println("Your grade is " + grade);
}
}
输出
Well done
Your grade is C
默认关键字
default 关键字用于指定一个代码块,当没有 case 值匹配时执行。default 关键字是可选的,但在 switch case 语句中应该使用它。