在Java中,switch
和case
语句用于进行多条件分支判断
- 类型匹配:
switch
表达式的类型必须是byte
、short
、int
、char
、String
或者它们的包装类(如Byte
、Short
、Integer
、Character
、String
)。从Java 7开始,switch
表达式还可以是枚举类型。 - 值匹配:
case
标签的值必须是常量或字面量,并且在编译时期就能确定。这意味着你不能使用变量或方法返回值作为case
标签的值。此外,每个case
标签的值必须在同一个switch
语句中是唯一的。 - 执行流程:当
switch
表达式的值与某个case
标签的值相等时,程序会从该case
标签处开始执行,直到遇到break
语句或者switch
语句结束。如果没有匹配到任何case
标签,程序会执行default
分支(如果存在)。 - 穿透现象:如果在某个
case
分支中没有break
语句,那么程序会继续执行下一个case
分支,这被称为“穿透”(fall-through)。为了避免穿透现象,建议在每个case
分支的末尾添加break
语句。 - 可以使用
default
分支来处理未匹配到任何case
标签的情况。default
分支是可选的,但建议在实际编程中使用,以提高代码的健壮性。
示例:
int number = 2; switch (number) { case 1: System.out.println("Number is 1"); break; case 2: System.out.println("Number is 2"); break; case 3: System.out.println("Number is 3"); break; default: System.out.println("Number is not 1, 2 or 3"); }
输出结果:
Number is 2