什么是 Java 中的 Switch Case 以及如何使用它?
已发表: 2022-03-04Java 中的switch case是告诉编程语言做什么的众多 Java 语句之一。 与提供完整文本概念和包含子句的英语句子一样,Java 语句是包含 Java 解释器执行的一个或多个表达式的命令。 简而言之,Java 语句是解释应该发生什么的指令。
Java 语句以分号 (;) 结尾,并告诉 Java 处理直到该分号的指令。 默认情况下,Java 解释器遵循语句的编写顺序,一个接一个地运行语句。 但是,控制程序流的语句(流控制语句),例如循环和条件语句,不遵循默认的执行顺序。 本文重点介绍一种这样的选择控制机制——Java switch case 语句。
目录
Java中的switch case是什么?
Java 支持三种语句:用于更改变量值、调用方法和创建对象的表达式语句、用于声明变量的声明语句和用于确定语句执行顺序的控制流语句。
Java switch case 语句是一种控制流语句,它允许表达式或变量的值通过多路分支改变程序执行的控制流。 与 if-then 和 if-then-else 语句相比, Java switch语句有多个执行路径。 Java 中的 switch case适用于 short、byte、int 和 char 原始数据类型。 从 JDK7 开始,Java 开关还可以与 String 类、枚举类型和包装原始数据类型(如 Byte、Character、Integer 和 Short)的 Wrapper 类一起使用。
Java 中 switch case 语句的主体称为 switch 块。 switch 块中的每个语句都使用一个或多个 case 或默认标签进行标记。 因此,switch 语句评估其表达式,然后执行匹配 case 标签后面的所有语句。
下面给出的是 switch case 语句的语法:
// 切换语句
开关(表达式)
{
// 案例陈述
// 值必须是相同类型的表达式
案例价值1:
// 语句
休息; // 中断是可选的
案例价值2:
// 语句
休息; // 中断是可选的
// 我们可以有任意数量的case语句
// 下面是默认语句,当所有情况都不成立时使用。
// 默认情况下不需要中断。
默认 :
// 语句
}
Java switch 语句的示例
以下 Java 代码示例声明了一个名为“month”的 int,其值表示一年中的 12 个月之一。 该代码使用 switch case 语句根据月份的值显示月份的名称。
公共类 SwitchExample {
公共静态无效主要(字符串[]参数){
整数月 = 6;
字符串月份字符串;
开关(月){
案例1:monthString =“一月”;
休息;
案例 2:monthString = “二月”;
休息;
案例3:monthString =“三月”;
休息;
案例 4:monthString = “April”;
休息;
案例 5:monthString = “May”;
休息;
案例 6:monthString = “六月”;
休息;
案例 7:monthString = “七月”;
休息;
案例 8:monthString = “八月”;
休息;
案例 9:monthString = “September”;
休息;
案例 10:monthString = “十月”;
休息;
案例 11:monthString = “十一月”;
休息;
案例 12:monthString = “十二月”;
休息;
默认值:monthString = “无效月份”;
休息;
}
System.out.println(monthString);
}
}
输出:六月
Java switch case中break语句的用途
break 语句是 Java switch case 的一个重要方面,它终止封闭的 switch 语句。 break 语句是必需的,因为没有它,switch 块中的语句就会失败。 因此,无论后续 case 标签的表达式如何,匹配的 case 标签之后的所有语句都会顺序执行,直到遇到 break 语句。
以下代码是一个示例,用于显示在没有 break 语句的情况下切换块失败。
公共类 SwitchExampleFallThrough {
公共静态无效主要(字符串[]参数){
java.util.ArrayList<String> futureMonths =
新的 java.util.ArrayList<String>();
整数月 = 6;
开关(月){
案例 1:futureMonths.add(“一月”);
案例 2:futureMonths.add(“二月”);
案例 3:futureMonths.add(“三月”);
案例4:futureMonths.add(“April”);
案例5:futureMonths.add(“May”);
案例 6:futureMonths.add(“六月”);
案例 7:futureMonths.add(“七月”);
案例 8:futureMonths.add(“August”);
案例 9:futureMonths.add(“September”);
案例 10:futureMonths.add(“十月”);
案例 11:futureMonths.add(“十一月”);
案例 12:futureMonths.add(“December”);
休息;
默认值:中断;
}
如果 (futureMonths.isEmpty()) {
System.out.println(“无效的月份数”);
} 别的 {
对于(字符串月份名称:futureMonths){
System.out.println(monthName);
}
}
}
}
输出:
六月
七月
八月
九月
十月
十一月
十二月
上面的代码显示了与整数月份对应的一年中的月份以及随后的月份。 在这里,最后的 break 语句没有任何作用,因为流程超出了 switch 语句。 使用 break 语句很有帮助,因为它使代码不易出错并且更容易修改。 代码中的默认部分处理不受任何案例部分规定的所有值。
具有多个 case 标签的 Java switch 语句
Java 中的 switch 语句也可以有多个 case 标签。 下面的代码说明了这一点——在这里,计算了一年中特定月份的天数。
类 SwitchMultiple{
公共静态无效主要(字符串[]参数){
整数月 = 2;
int 年 = 2020;
整数天数 = 0;
开关(月){
案例 1: 案例 3: 案例 5:
案例 7: 案例 8: 案例 10:
案例 12:
天数 = 31;
休息;
案例4:案例6:
案例 9: 案例 11:
天数 = 30;
休息;
案例2:
if (((年 % 4 == 0) &&
!(年 % 100 == 0))
|| (年 % 400 == 0))
天数 = 29;
别的
天数 = 28;
休息;
默认:
System.out.println(“无效月份。”);
休息;
}
System.out.println(“天数 = “
+ 天数);
}
}
输出:
天数 = 29
嵌套的 Java switch case 语句
嵌套开关是指将开关用作外部开关语句序列的一部分。 在这种情况下,另一个 switch 中的 case 常量与内部 switch 中的 case 常量之间没有冲突,因为 switch 语句定义了自己的块。
以下示例演示了嵌套Java switch-case语句的使用:
公共类TestNest {
公共静态无效主要(字符串 [] 参数)
{
字符串分支 = “CSE”;
int 年 = 2;
开关(年){
情况1:
System.out.println(“选修课:代数、高级英语”);
休息;
案例2:
switch (Branch) // 嵌套开关
{
案例“CSE”:
案例“CCE”:
System.out.println(“选修课:大数据、机器学习”);
休息;
案例“欧洲经委会”:
System.out.println(“选修课:天线工程”);
休息;
默认:
System.out.println(“选修课:优化”);
}
}
}
}
输出:
选修课:大数据、机器学习
在 switch 语句中使用字符串
从 JDK7 开始,您可以在 switch 语句的表达式中使用 String 对象。 switch 语句表达式中的字符串对象与每个 case 标签的关联表达式的比较就像使用 String.equals 方法一样。 此外,switch 语句表达式中字符串对象的比较是区分大小写的。
以下代码示例根据名为“game”的字符串的值显示游戏类型。
公共类 StringInSwitchStatementExample {
公共静态无效主要(字符串[]参数){
字符串游戏=“板球”;
开关(游戏){
案例“排球”:案例“足球”:案例“板球”:
System.out.println(“这是一个户外游戏”);
休息;
案例“纸牌游戏”:案例“国际象棋”:案例“拼图”:案例“室内篮球”:
System.out.println(“这是一个室内游戏”);
休息;
默认:
System.out.println(“这是什么游戏?”);
}
}
}
输出:
这是户外游戏
使用 Java switch 语句时要记住的规则
最好在使用Java switch语句时牢记某些规则。 以下是相同的列表:
- case 的值和 switch 中的变量应该具有相同的数据类型。
- Java switch语句不允许重复的 case 值。
- case 值应该是文字或常量。 不允许使用变量。
- 在 switch 中使用 break 语句会终止语句序列。
- break 语句是可选的,省略它将继续执行到后续情况。
- 默认语句也是可选的,可以出现在 switch 块中的任何位置。 如果没有放在最后,则必须在 default 语句之后添加一个 break 语句,以跳过后面的 case 语句的执行。
前进之路
Java 在程序员和开发人员中拥有无与伦比的流行度,并且是当今最受欢迎的编程语言之一。 毋庸置疑,想要为不断发展的就业市场提升自身技能的新兴开发人员和软件工程师需要掌握 Java 技能。
upGrad 的软件工程与工作相关的 PG 认证专为想要学习编码并担任入门级软件角色的应届生和应届毕业生而设计。
如果您想知道为期 5 个月的在线课程需要什么,这里有一些亮点可以给您一个想法:
- 获得 MERN 堆栈和云原生专业化
- 学习 Java、DSA、CSS3、HTML5、AWS、MERN、SQL 和 NoSQL 数据库等顶级技能
- 500 多个小时的内容和 350 多个小时的实践培训
- 五个行业项目和 50 多个现场会议
- 安置准备和职业指导
- 讨论论坛和强大的同行网络
如果您想开始您的软件工程职业生涯,这是您向最优秀的人学习的机会。
1. switch 语句中的 case 是什么?
Java 中的 switch 语句允许根据值列表测试变量的相等性。 在这里,每个值都称为一个案例,并为每个案例检查打开的变量。
2、switch case有什么优势?
Java switch case 语句相对于传统的 if-else 级联的主要优势在于前者允许程序员编写更紧凑、清晰和可读的代码。 另一方面,if-else 语句通常涉及大量代码重复。 因此,如果我们想要更改代码的特定部分,我们将不得不在其他地方进行更改。 为了避免这个耗时且容易出错的过程,使用 switch case 更为明智。
3、switch case和if-else有什么区别?
在 switch 语句的情况下,case 一个接一个地依次执行,直到遇到 break 关键字或执行 default 语句。 相反,在 if-else 语句的情况下,根据条件执行“if”或“else”块。