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; }