跳转至

Java 中的 Switch 语句详解

简介

在 Java 编程中,switch 语句是一种控制流语句,用于根据表达式的值来选择执行不同的代码块。它提供了一种简洁且高效的方式来处理多个条件分支,相比于使用多个 if-else 语句,switch 语句在处理多个固定值的条件判断时更加清晰和易读。本文将详细介绍 Java 中 switch 语句的基础概念、使用方法、常见实践以及最佳实践。

目录

  1. 基础概念
  2. 使用方法
  3. 常见实践
  4. 最佳实践
  5. 小结
  6. 参考资料

基础概念

switch 语句是一种多分支选择语句,它根据一个表达式的值来决定执行哪个 case 分支。基本语法如下:

switch (expression) {
    case value1:
        // 代码块 1
        break;
    case value2:
        // 代码块 2
        break;
    // 可以有更多的 case 分支
    default:
        // 当 expression 的值与所有 case 的值都不匹配时执行
        break;
}
  • expression:可以是整数类型(byteshortintchar)、枚举类型、String 类型(从 Java 7 开始支持)等。
  • case:每个 case 后面跟着一个常量值,当 expression 的值等于该常量值时,执行对应的代码块。
  • break:用于终止 switch 语句的执行,防止代码继续向下执行到其他 case 分支。
  • default:可选的,当 expression 的值与所有 case 的值都不匹配时,执行 default 分支的代码。

使用方法

整数类型的 switch 语句

public class IntegerSwitchExample {
    public static void main(String[] args) {
        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("无效的输入");
                break;
        }
    }
}

枚举类型的 switch 语句

enum Color {
    RED, GREEN, BLUE
}

public class EnumSwitchExample {
    public static void main(String[] args) {
        Color color = Color.GREEN;
        switch (color) {
            case RED:
                System.out.println("颜色是红色");
                break;
            case GREEN:
                System.out.println("颜色是绿色");
                break;
            case BLUE:
                System.out.println("颜色是蓝色");
                break;
        }
    }
}

String 类型的 switch 语句(Java 7 及以上)

public class StringSwitchExample {
    public static void main(String[] args) {
        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("未知的水果");
                break;
        }
    }
}

常见实践

合并多个 case

当多个 case 需要执行相同的代码时,可以合并它们。

public class MultipleCaseExample {
    public static void main(String[] args) {
        int month = 2;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println("这个月有 31 天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("这个月有 30 天");
                break;
            case 2:
                System.out.println("这个月可能有 28 或 29 天");
                break;
            default:
                System.out.println("无效的月份");
                break;
        }
    }
}

Java 14 及以上的 switch 表达式

Java 14 引入了 switch 表达式,它可以返回一个值,使得代码更加简洁。

public class SwitchExpressionExample {
    public static void main(String[] args) {
        int day = 3;
        String dayName = switch (day) {
            case 1 -> "星期一";
            case 2 -> "星期二";
            case 3 -> "星期三";
            case 4 -> "星期四";
            case 5 -> "星期五";
            case 6 -> "星期六";
            case 7 -> "星期日";
            default -> "无效的输入";
        };
        System.out.println(dayName);
    }
}

最佳实践

  • 使用 break 避免 fall-through:在每个 case 分支的末尾使用 break 语句,防止代码继续执行到下一个 case 分支。
  • 合理使用 default 分支default 分支可以处理所有未匹配的情况,确保代码的健壮性。
  • 使用 switch 表达式(Java 14 及以上):当需要返回一个值时,优先使用 switch 表达式,它可以使代码更加简洁和易读。
  • 避免复杂的表达式switch 语句的 expression 应该尽量简单,避免使用复杂的表达式,以提高代码的可读性。

小结

本文详细介绍了 Java 中 switch 语句的基础概念、使用方法、常见实践以及最佳实践。switch 语句是一种强大的控制流语句,在处理多个固定值的条件判断时非常有用。通过合理使用 switch 语句和 switch 表达式,可以使代码更加清晰、简洁和易读。

参考资料