Java switch用法详解(新手必看)
Java 中的 switch 语句可以基于一个变量的值,选择执行不同的代码块。它通常用来处理固定值的判断。
在 Java 12 及之后的版本中,Java 引入了 switch 表达式的概念,它进一步扩展了 switch 语句的功能。switch 表达式允许在一个表达式中直接返回一个值,而不仅仅是在不同的代码块中执行代码。
下面我们分别详细介绍 switch 语句和 switch 表达式。
其他类型的表达式,如 long、float、double 等,以及自定义类对象等,是不允许作为 switch 语句的表达式的。
注意,虽然 default 语句是可选的,但在某些情况下,为了保证程序的正确性,我们可能需要在 switch 语句中提供一个 default 分支,以处理未匹配到其他 case 值时的情况。这样可以避免在表达式值不匹配任何 case 时导致的意外行为。
【实例 1】表达式计算结果是 int 类型
【实例 2】表达式计算结果是 String 类型
程序运行结果:
switch 表达式是对传统 switch 语句的改进,允许在一种更简洁、更灵活的方式下进行条件判断。它可以用作表达式,而不仅仅是语句。
传统的 switch 语句在执行匹配时,一旦找到匹配的 case,就会执行该 case 以下的所有语句,或者直到遇到 break 或者整个 switch 语句结束。而 switch 表达式允许将匹配的结果赋值给一个变量,从而可以更方便地进行数据的处理。
以下是 switch 表达式的一般语法:
在计算机编程中,表达式(Expression)是由操作数和操作符组成的组合,用于产生一个值。表达式可以是简单的常量、变量,也可以是复杂的数学运算、函数调用等组合。
例如:
在 Java 12 及之后的版本中,Java 引入了 switch 表达式的概念,它进一步扩展了 switch 语句的功能。switch 表达式允许在一个表达式中直接返回一个值,而不仅仅是在不同的代码块中执行代码。
下面我们分别详细介绍 switch 语句和 switch 表达式。
Java switch语句的用法
最早的 switch 语句是从 C 和 C++ 语言继承而来的,下面先介绍 switch 语句基本形式的语法结构,如下所示:switch (表达式) { case 值1: 语句组1 case 值2: 语句组2 case 值3: 语句组3 ... case 值n: 语句组n default: 语句组n+1 }default 分支可以省略。switch 语句中“表达式”的计算结果必须是以下几种类型:
- byte、short、char 和 int 类型:这些是Java 的基本数据类型,可以作为 switch 语句的表达式。
- Byte、Short、Character 和 Integer 等包装类:Java 的自动拆箱(auto-unboxing)特性允许将这些包装类的对象转换为对应的基本数据类型,因此它们也可以作为 switch 语句的表达式。
- String 类型:自 Java 7 起,Java 支持将 String 类型作为 switch 语句的表达式,从而可以根据字符串的值进行多分支条件控制。
- 枚举类型:枚举类型也可以用作 switch 语句的表达式,每个枚举常量都对应一个整数值,因此可以与 case 中的值进行匹配。
其他类型的表达式,如 long、float、double 等,以及自定义类对象等,是不允许作为 switch 语句的表达式的。
注意,虽然 default 语句是可选的,但在某些情况下,为了保证程序的正确性,我们可能需要在 switch 语句中提供一个 default 分支,以处理未匹配到其他 case 值时的情况。这样可以避免在表达式值不匹配任何 case 时导致的意外行为。
【实例 1】表达式计算结果是 int 类型
// 表达式计算结果是 int 类型 public class SwitchExample1 { public static void main(String[] args) { int dayOfWeek = 3; switch (dayOfWeek) { case 1: System.out.println("今天是星期一"); break; case 2: System.out.println("今天是星期二"); break; case 3: System.out.println("今天是星期三"); break; case 4: System.out.println("今天是星期四"); break; case 5: System.out.println("今天是星期五"); break; case 6: System.out.println("今天是星期六"); break; case 7: System.out.println("今天是星期日"); break; default: System.out.println("无效的星期值"); } } }程序运行结果:
今天是星期三
【实例 2】表达式计算结果是 String 类型
// 表达式计算结果是 String 类型 public class SwitchExample2 { public static void main(String[] args) { String day = "Tuesday"; switch (day) { case "Monday": System.out.println("星期一"); break; case "Tuesday": System.out.println("星期二"); break; case "Wednesday": System.out.println("星期三"); break; case "Thursday": System.out.println("星期四"); break; case "Friday": System.out.println("星期五"); break; case "Saturday": System.out.println("星期六"); break; case "Sunday": System.out.println("星期日"); break; default: System.out.println("无效的星期值"); } } }
程序运行结果:
星期二
Java switch表达式
在 Java 12 中引入了新的 switch 表达式,Java 14 进一步增强了这个特性。switch 表达式是对传统 switch 语句的改进,允许在一种更简洁、更灵活的方式下进行条件判断。它可以用作表达式,而不仅仅是语句。
传统的 switch 语句在执行匹配时,一旦找到匹配的 case,就会执行该 case 以下的所有语句,或者直到遇到 break 或者整个 switch 语句结束。而 switch 表达式允许将匹配的结果赋值给一个变量,从而可以更方便地进行数据的处理。
以下是 switch 表达式的一般语法:
result = switch (expression) { case value1 -> expression1; case value2 -> expression2; // ... case valueN -> expressionN; default -> expressionDefault; };这段代码将表达式 expression 与一系列值 value1, value2, ..., valueN 进行匹配。如果 expression 与某个值匹配,就会执行相应的 expression。如果没有匹配项,就会执行 default 后面的 expressionDefault。switch 表达式将匹配的结果赋值给变量 result,这样 result 就包含了相应匹配项的结果值。
在计算机编程中,表达式(Expression)是由操作数和操作符组成的组合,用于产生一个值。表达式可以是简单的常量、变量,也可以是复杂的数学运算、函数调用等组合。
例如:
public class SwitchExample { public static void main(String[] args) { int dayOfWeek = 3; String dayName = switch (dayOfWeek) { case 1 -> "星期日"; case 2 -> "星期一"; case 3 -> "星期二"; case 4 -> "星期三"; case 5 -> "星期四"; case 6 -> "星期五"; case 7 -> "星期六"; default -> "无效的日期"; }; System.out.println("今天是" + dayName); } }程序运行结果:
今天是星期二