JAVA switch 语句 浅谈

switch 语句

switch语句是一种控制流语句,用于根据变量的值执行不同的代码块。switch语句提供了一种更清晰的方式来编写多条件分支代码,相对于if-else if-else语句,它可以使代码更加整洁和易读。下面是对Java中switch语句的详细介绍。

基本结构

switch语句的基本结构如下:

switch (expression) {
    case value1:
        // 当expression的值等于value1时执行的代码
        break;
    case value2:
        // 当expression的值等于value2时执行的代码
        break;
    // 可以有任意数量的case语句
    default:
        // 当expression的值不等于任何case值时执行的代码
        break;
}

关键字说明

  • switch:定义一个基于表达式结果的多分支选择结构。
  • case:定义一个分支,当switch表达式的值匹配case值时执行该分支的代码。
  • break:用于终止case代码块,防止执行落入下一个case中。如果没有break,程序会继续执行后续的case代码块(即使这些case的值不匹配)。
  • default:可选的分支,当switch表达式的值不匹配任何一个case值时执行的代码块。

示例代码

下面是一些具体的例子来说明switch语句的使用。

简单的switch语句

int day = 3;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    case 3:
        System.out.println("Wednesday");
        break;
    case 4:
        System.out.println("Thursday");
        break;
    case 5:
        System.out.println("Friday");
        break;
    case 6:
        System.out.println("Saturday");
        break;
    case 7:
        System.out.println("Sunday");
        break;
    default:
        System.out.println("Invalid day");
        break;
}

switch语句中的字符串

从Java 7开始,switch语句支持字符串类型。

String fruit = "Apple";
switch (fruit) {
    case "Apple":
        System.out.println("Apple is red");
        break;
    case "Banana":
        System.out.println("Banana is yellow");
        break;
    case "Orange":
        System.out.println("Orange is orange");
        break;
    default:
        System.out.println("Unknown fruit");
        break;
}

switch语句中的枚举

switch语句也可以用于枚举类型。

enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

Day day = Day.WEDNESDAY;
switch (day) {
    case MONDAY:
        System.out.println("Monday");
        break;
    case TUESDAY:
        System.out.println("Tuesday");
        break;
    case WEDNESDAY:
        System.out.println("Wednesday");
        break;
    case THURSDAY:
        System.out.println("Thursday");
        break;
    case FRIDAY:
        System.out.println("Friday");
        break;
    case SATURDAY:
        System.out.println("Saturday");
        break;
    case SUNDAY:
        System.out.println("Sunday");
        break;
}

注意事项

  1. 表达式类型:switch表达式的类型可以是byte、short、char、int、String、枚举类型(enum)或其包装类。
  2. break语句:break语句在switch语句中非常重要,用于终止一个case分支。如果省略break,程序会继续执行下一个case分支,直到遇到break或switch语句结束。
  3. default分支:default分支是可选的,但建议使用,以处理所有未被匹配的情况。

面试问题

如果匹配到的case执行完没有break,那么会执行下面的default的内容么?

是的,如果匹配到的case分支执行完后没有遇到break语句,程序会继续执行后续的case分支(包括default分支)中的代码,直到遇到break语句或switch语句结束。这种行为被称为“fall-through”。
下面是一个例子,展示了如果没有使用break语句会发生什么:

int day = 3;
switch (day) {
    case 1:
        System.out.println("Monday");
        // 没有break,继续执行下一个case
    case 2:
        System.out.println("Tuesday");
        // 没有break,继续执行下一个case
    case 3:
        System.out.println("Wednesday");
        // 没有break,继续执行下一个case
    case 4:
        System.out.println("Thursday");
        // 没有break,继续执行下一个case
    case 5:
        System.out.println("Friday");
        // 没有break,继续执行下一个case
    case 6:
        System.out.println("Saturday");
        // 没有break,继续执行下一个case
    case 7:
        System.out.println("Sunday");
        // 没有break,继续执行下一个case
    default:
        System.out.println("Invalid day");
}

在这个例子中,如果day的值是3,输出将是:
mathematica
Wednesday
Thursday
Friday
Saturday
Sunday
Invalid day

这是因为case 3匹配后,所有后续的case分支(包括default)都会被执行,直到switch语句结束。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值