Java switch case 语句
                           
天天向上
发布: 2025-03-01 18:32:47

原创
905 人浏览过

switch 语句是 Java 中的一种控制结构,用于在多个选项之间进行选择。它提供了比多个 if...else 语句更简洁和高效的方式来处理多个条件的判断。

1. switch 语句的基本语法

switch (表达式) {
    case 常量1:
        // 当表达式的值等于常量1时,执行此代码
        break;
    case 常量2:
        // 当表达式的值等于常量2时,执行此代码
        break;
    case 常量3:
        // 当表达式的值等于常量3时,执行此代码
        break;
    default:
        // 如果没有任何一个 case 匹配时,执行此代码
}
  • 表达式:可以是整数类型(byteshortcharint),也可以是枚举类型、String 或者 var(Java 14 引入)。
  • case:用来匹配表达式的可能值,常量值可以是 intcharString 等类型。
  • break:用于终止 switch 语句块的执行,防止继续执行下一个 case。如果没有 breakswitch 会继续执行接下来的 case,即“穿透”。
  • default:可选项,如果没有任何 case 匹配,default 会执行。default 可以放在任何位置,但通常放在所有 case 语句的最后。

2. switch 语句的示例

示例 1:使用整数类型进行匹配

int day = 3;
switch (day) {
    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 进行匹配(Java 7 及以后支持)

String fruit = "apple";
switch (fruit) {
    case "apple":
        System.out.println("苹果");
        break;
    case "banana":
        System.out.println("香蕉");
        break;
    case "orange":
        System.out.println("橙子");
        break;
    default:
        System.out.println("未知水果");
}

输出:

苹果

3. switch 语句的特点

  • 效率switch 语句通常比多重 if...else 判断语句执行效率更高,尤其是当有多个 case 时。
  • 匹配类型switch 语句要求表达式和 case 的值必须是相同类型,且 Java 7 及以后版本支持使用 String 类型进行匹配。
  • 可读性:当有多个条件需要判断时,使用 switch 可以使代码更简洁,易于阅读和维护。

4. 没有 break 的情况(穿透)

如果在某个 case 中没有 break,代码会继续执行下一个 case,即使条件不匹配,这种行为称为“穿透”。这种情况有时是有意为之,但在多数情况下,需要使用 break 来避免它。

示例:没有 break 的穿透

int day = 3;
switch (day) {
    case 1:
        System.out.println("星期一");
    case 2:
        System.out.println("星期二");
    case 3:
        System.out.println("星期三");
    default:
        System.out.println("未知");
}

输出:

星期三
未知

由于没有 break,代码会从 case 3 执行到 default

5. 使用多个 case 标签来执行相同的代码

你可以将多个 case 标签合并来执行相同的代码,而无需为每个 case 编写重复的代码。如下所示:

int day = 1;
switch (day) {
    case 1:
    case 2:
    case 3:
        System.out.println("工作日");
        break;
    case 4:
    case 5:
        System.out.println("周末");
        break;
    default:
        System.out.println("未知");
}

输出:

工作日

6. switch 语句中的 var(Java 14 引入)

在 Java 14 及以后版本,你可以使用 var 来代替 switch 表达式中的类型,使代码更加简洁。例如:

var day = 2;
switch (day) {
    case 1 -> System.out.println("星期一");
    case 2 -> System.out.println("星期二");
    case 3 -> System.out.println("星期三");
    default -> System.out.println("无效的输入");
}

这种形式叫做箭头语法(Arrow Syntax),它是 switch 表达式的一种新用法,提供了更加简洁的表达方式。

总结

  • switch 语句提供了一个有效的方式来处理多个条件。
  • 它比多个 if...else 语句更简洁,尤其是在条件很多时,switch 可以提高代码的可读性和执行效率。
  • switch 支持多种类型,包括整数、字符、枚举类型和 String 类型(Java 7 及以后)。
  • switch 中的 case 标签需要与表达式的类型一致,并且可以通过 break 防止“穿透”现象。

更多详细内容请关注其他相关文章。

发表回复 0

Your email address will not be published. Required fields are marked *