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
语句中应该使用它。