Java switch case 语句
Switch语句是Java的选择语句,可以有许多可能的执行路径。 Java中的另一个选择语句if-else-if梯形图也会根据条件的评估执行一个代码块,而Java中的switch-case提供了一种更容易且更易读的替代方法,而不是使用大型if-else -如果梯子。
Java switch-case语句的语法是
switch(expression) {
case value1:
// statements
break;
case value2:
// statements
break;
.
.
.
case valueN :
// statements
break;
default:
// statements
}
switch语句的主体称为switch块。开关块包含一个或者多个案例标签和一个可选的默认标签。
Java switch语句如何工作
switch语句评估其表达式并将其与每个case标签的值进行比较,并执行匹配的case标签之后的所有语句。
如果switch语句表达式与任何case标签都不匹配,则执行默认标签后面的语句。请注意,默认部分不是必需的。如果不存在默认节,并且所有case标签都不匹配表达式,则控件从switch块出来,而无需执行任何语句。
在switch块中使用break语句非常重要,因为它会终止switch语句。一旦遇到break语句,控制就会从switch语句中发出。
break语句是必需的,因为没有它们,即使匹配的case标签的值与switch语句表达式不匹配,匹配的case标签之后的后续case标签中的所有语句也会按顺序执行。
switch语句表达式的类型
switch语句适用于以下类型之一:
基本数据类型-byte,short,char和int
枚举类型
包装某些原始类型的包装器类:字符,字节,短型和整数
字符串(Java 7及更高版本)
关于Java中的switch case 语句的一些说明如下:
switch语句仅用于相等性测试,其中switch语句表达式与case标签匹配,并且执行匹配的case语句。
用case指定的值是一个常量表达式。
我们不能有两个具有相同值的case语句。每个case标签应具有唯一的值,否则我们将得到编译时错误。
每个case语句中的值必须与switch语句中的表达式类型兼容。
Java switch语句中的with缺省部分是可选的。如果存在,通常建议将默认语句设置为最后一条语句,而在最后一条语句之后则不需要break语句。
每个case语句之后的break语句也是可选的。如果case之后没有break语句,则还将依次执行下一个case语句,直到遇到break语句或者执行所有case语句为止。
Java switch case 示例
public class SwitchExample {
public static void main(String[] args) {
int dayOfWeek =5;
String day;
switch(dayOfWeek){
case 1:
day = "Sunday";
break;
case 2:
day = "Monday";
break;
case 3:
day = "Tuesday";
break;
case 4:
day = "Wednesday";
break;
case 5:
day = "Thursday";
break;
case 6:
day = "Friday";
break;
case 7:
day = "Saturday";
break;
default:
day = "Invalid value";
}
System.out.println("Day is- " + day);
}
}
输出:
Day is- Thursday
switch语句的表达式的代码值是5,它与具有5的case标签匹配。由于break语句也在那里,所以switch语句终止,并且执行switch块之后的语句。
在switch语句中执行默认部分
在上一个示例中,如果将dayOfWeek传递为10,则它将不匹配任何case语句,因此将执行默认语句,将输出显示为
天为无效值
默认部分是可选的,在代码中,如果删除了默认语句并且将dayOfWeek传递为10,则在switch块中将不执行任何语句。
public class SwitchExample {
public static void main(String[] args) {
int dayOfWeek = 10;
String day="";
switch(dayOfWeek){
case 1:
day = "Sunday";
break;
case 2:
day = "Monday";
break;
case 3:
day = "Tuesday";
break;
case 4:
day = "Wednesday";
break;
case 5:
day = "Thursday";
break;
case 6:
day = "Friday";
break;
case 7:
day = "Saturday";
break;
}
System.out.println("Day is- " + day);
}
}
输出:
Day is
Java switch-case中 删除break语句
public class SwitchExample {
public static void main(String[] args) {
int num = 4;
switch(num){
case 1:
System.out.println("Passed value is 1");
case 2:
System.out.println("Passed value is 2");
case 3:
System.out.println("Passed value is 3");
case 4:
System.out.println("Passed value is 4");
case 5:
System.out.println("Passed value is 5");
case 6:
System.out.println("Passed value is 6");
case 7:
System.out.println("Passed value is 7");
default:
System.out.println("Passed value doesn't match any value.. ");
}
System.out.println("Out of switch statement..");
}
}
输出:
Passed value is 4 Passed value is 5 Passed value is 6 Passed value is 7 Passed value doesn't match any value.. Out of switch statement..
如我们所见,一旦case语句的值与表达式匹配,所有其他case语句也会按顺序执行,因为不存在break语句。
在switch语句中的每个个案之后都没有break语句并不总是会产生问题,这还使我们有机会对case语句进行分组,如下例所示。
public class SwitchExample {
public static void main(String[] args) {
int dayOfWeek = 2;
switch(dayOfWeek){
case 2:
case 3:
case 4:
case 5:
case 6:
System.out.println("It's weekday");
break;
case 1:
case 7:
System.out.println("It's weekend");
break;
}
System.out.println("Out of switch statement ");
}
}
输出:
It's weekday Out of switch statement
在Java switch语句中使用String
从Java 7开始,我们还可以将String类型的表达式与Java switch语句一起使用。
public class SwitchExample {
public static void main(String[] args) {
String day = "Bangalore";
String cityCode = "";
switch(day){
case "Delhi":
cityCode = "DEL";
break;
case "Lucknow":
cityCode = "LKO";
break;
case "Bangalore":
cityCode = "BLR";
break;
case "Mumbai":
cityCode = "MUM" ;
break;
default:
cityCode="Not found";
}
System.out.println("City code " + cityCode);
}
}
输出:
City code BLR
用Java switch语句中使用枚举
以下Java switch案例演示了如何将Enum用作带有switch语句的表达式。
public class SwitchExample {
public enum Day {Sun, Mon, Tue, Wed, Thu, Fri, Sat}
public static void main(String[] args) {
Day day = Day.Mon;
switch(day){
case Sun:
System.out.println("Day is Sunday");
break;
case Mon:
System.out.println("Day is Monday");
break;
case Tue:
System.out.println("Day is Tuesday");
break;
case Wed:
System.out.println("Day is Wednesday");
break;
case Thu:
System.out.println("Day is Thursday");
break;
case Fri:
System.out.println("Day is Friday");
break;
case Sat:
System.out.println("Day is Saturday");
break;
}
}
}
输出:
Day is Monday
Java中的嵌套switch语句
我们可以在外部开关中带有一个switch-case语句,称为嵌套开关语句。
switch(expression){
case 1:
switch(expression){
case 1: .....
break;
case 2 : ....
break;
...
...
}
break;
}

