switch case 语句是一种用于多个条件判断的控制流语句。与 if...else 语句类似,switch 可以根据不同的条件值来选择执行不同的代码块。然而,switch case 语句特别适用于需要根据单一变量的多个可能值进行判断的场景。


目录

  1. switch case 语句概述
  2. switch case 语法
  3. switch case 示例
  4. switch case 的注意事项
  5. switch 语句中的 breakdefault
  6. 参考资料
  7. 出站链接

1. switch case 语句概述

switch case 语句根据变量的值匹配不同的 case,并执行相应的代码块。如果没有匹配到任何 case,可以选择使用 default 语句作为默认处理。

  • switch 表达式会计算一个值,并与每个 case 标签的常量值进行比较。
  • 如果找到了匹配的 case,则执行该 case 下的代码。
  • 如果没有匹配到任何 case,可以使用 default 来执行默认的代码块。

2. switch case 语法

switch (表达式) {
    case 值1:
        // 如果表达式 == 值1,执行此代码块
        break;
    case 值2:
        // 如果表达式 == 值2,执行此代码块
        break;
    case 值3:
        // 如果表达式 == 值3,执行此代码块
        break;
    default:
        // 如果没有匹配到任何 case,执行此代码块
}

  • 表达式:可以是 intcharbyteshortString 等类型的值。
  • case 值:每个 case 后面的值会与表达式进行比较,如果匹配则执行对应的代码块。
  • breakbreak 用于跳出 switch 语句,防止程序继续执行下一个 case
  • defaultdefault 可选,如果没有匹配到任何 case,则执行默认的代码块。

3. switch case 示例

示例 1:简单的 switch case 语句

public class SwitchCaseExample {
    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("无效的日期");
        }
    }
}

输出:

星期三

在这个例子中,switch 表达式的值为 3,因此匹配到 case 3,执行了对应的代码块,输出 “星期三”。


示例 2:使用 String 类型的 switch case

Java 7 及以上版本允许使用 String 类型作为 switch 的表达式。

public class SwitchStringExample {
    public static void main(String[] args) {
        String color = "红色";
        switch (color) {
            case "红色":
                System.out.println("选择了红色");
                break;
            case "绿色":
                System.out.println("选择了绿色");
                break;
            case "蓝色":
                System.out.println("选择了蓝色");
                break;
            default:
                System.out.println("未知颜色");
        }
    }
}

输出:

选择了红色

这里的 switch 使用了一个 String 类型的表达式,根据不同的颜色选择输出对应的结果。


4. switch case 的注意事项

  • switch 语句不支持 浮点数floatdouble)作为表达式,通常只能使用整数类型(intcharbyteshort)或 String 类型。
  • 在每个 case 语句块的末尾加上 break 是非常重要的,否则会导致穿透(fall-through),即如果没有 break,程序会继续执行下一个 case 语句块,即使它不符合条件。
  • default 语句是可选的,如果没有匹配到任何 casedefault 会作为默认的代码块执行。

5. switch 语句中的 breakdefault

(1) break 语句

break 用于跳出 switch 语句,防止代码继续执行下一个 case。如果省略 break,则会导致穿透,也就是执行下一个 case 的代码块。

示例:

public class BreakExample {
    public static void main(String[] args) {
        int day = 3;
        switch (day) {
            case 1:
                System.out.println("星期一");
            case 2:
                System.out.println("星期二");
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
            default:
                System.out.println("无效日期");
        }
    }
}

输出:

星期三
星期四
无效日期

没有 break 语句时,case 3 执行后,程序继续执行了 case 4default,导致了不期望的输出。

(2) default 语句

default 语句是可选的,它在没有任何 case 匹配时执行。

示例:

public class DefaultExample {
    public static void main(String[] args) {
        int month = 13;
        switch (month) {
            case 1:
                System.out.println("一月");
                break;
            case 2:
                System.out.println("二月");
                break;
            case 3:
                System.out.println("三月");
                break;
            default:
                System.out.println("无效的月份");
        }
    }
}

输出:

无效的月份

在这个例子中,month 的值为 13,不匹配任何 case,所以程序执行了 default 语句块,输出 “无效的月份”。


参考资料


出站链接