Java switch case隐藏用法

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
私网连接 PrivateLink,5万GB流量 1.5万小时实例时长
全球加速 GA,每月750个小时 15CU
简介: 在 Java 中,`switch` 语句是一种多分支选择结构,常用于根据变量值执行不同代码块。除基本用法外,它还有多种进阶技巧,如使用字符串(Java 7 开始支持)、多个 `case` 共享代码块、不使用 `break` 实现 “fall-through”、使用枚举类型、使用表达式(Java 12 及以上)、组合条件以及使用标签等。这些技巧使代码更加简洁、清晰且高效。

在Java中,switch语句是一个多分支选择结构,通常用于根据变量的值执行不同的代码块。除了基本的用法外,switch语句还有一些不太常见但有用的隐藏用法。以下是一些示例和说明:

1. 使用字符串作为条件

从Java 7开始,switch语句支持字符串类型。这使得可以更直观地处理多个字符串值。

String day = "MONDAY";
switch (day) {
   
    case "MONDAY":
        System.out.println("Start of the week");
        break;
    case "FRIDAY":
        System.out.println("End of the week");
        break;
    default:
        System.out.println("Midweek day");
}

2. 多个case共享同一代码块

可以将多个case标签放在一起,共享同一代码块,减少重复代码。

int number = 2;
switch (number) {
   
    case 1:
    case 2:
    case 3:
        System.out.println("Number is between 1 and 3");
        break;
    default:
        System.out.println("Number is out of range");
}

3. 不使用break语句

如果不使用break语句,程序会继续执行下一个case的代码,直到遇到breakswitch结束。这种用法称为“fall-through”。

int number = 2;
switch (number) {
   
    case 1:
        System.out.println("One");
    case 2:
        System.out.println("Two");
    case 3:
        System.out.println("Three");
        break;
    default:
        System.out.println("Not 1, 2, or 3");
}
// 输出:Two
// 输出:Three

4. 使用枚举类型

switch语句可以与枚举类型结合使用,使代码更加清晰和类型安全。

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

Day today = Day.MONDAY;
switch (today) {
   
    case MONDAY:
        System.out.println("Start of the week");
        break;
    case FRIDAY:
        System.out.println("End of the week");
        break;
    default:
        System.out.println("Midweek day");
}

5. 使用表达式作为case条件

在Java 12及更高版本中,可以使用switch表达式,允许在case中使用箭头语法,简化代码。

int number = 2;
String result = switch (number) {
   
    case 1 -> "One";
    case 2 -> "Two";
    case 3 -> "Three";
    default -> "Not 1, 2, or 3";
};
System.out.println(result);

6. 组合条件

case中可以使用逻辑运算符来组合条件,但需要注意的是,case标签本身不能直接使用逻辑运算符。

int number = 2;
switch (number) {
   
    case 1:
    case 2:
        System.out.println("Number is 1 or 2");
        break;
    case 3:
        System.out.println("Number is 3");
        break;
    default:
        System.out.println("Number is out of range");
}

7. 使用标签

switch语句中,可以使用标签来标识特定的case,这在嵌套的switch语句中尤其有用。

outerSwitch:
switch (outerValue) {
   
    case 1:
        switch (innerValue) {
   
            case 1:
                System.out.println("Outer 1, Inner 1");
                break outerSwitch; // 退出外层 switch
            case 2:
                System.out.println("Outer 1, Inner 2");
                break;
        }
        break;
}

总结

Java中的switch语句不仅仅是简单的条件选择工具,它还支持字符串、枚举、表达式等多种用法。通过合理利用这些隐藏用法,可以使代码更加简洁、清晰和高效。

相关文章
|
3天前
|
Java
java switch case多个条件
通过本文的介绍,我们详细探讨了Java中 `switch case`语句的多种用法和优化方法。从基本语法到合并多个条件,再到使用枚举、常量和函数优化,`switch case`语句在Java编程中提供了一种灵活且高效的控制流方式。掌握这些技巧,能够编写出更加简洁、可读性强的代码,提高开发效率和代码质量。希望本文能为您在实际开发中提供有价值的参考和指导。
14 2
|
22天前
|
存储 安全 Java
深入理解Java中的FutureTask:用法和原理
【10月更文挑战第28天】`FutureTask` 是 Java 中 `java.util.concurrent` 包下的一个类,实现了 `RunnableFuture` 接口,支持异步计算和结果获取。它可以作为 `Runnable` 被线程执行,同时通过 `Future` 接口获取计算结果。`FutureTask` 可以基于 `Callable` 或 `Runnable` 创建,常用于多线程环境中执行耗时任务,避免阻塞主线程。任务结果可通过 `get` 方法获取,支持阻塞和非阻塞方式。内部使用 AQS 实现同步机制,确保线程安全。
|
29天前
|
Java 测试技术 编译器
🎯Java零基础-Switch条件语句详解 🎯
【10月更文挑战第8天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
25 6
|
1月前
|
Java 程序员 编译器
在Java编程中,if-else与switch语句犹如武林高手的剑与刀
【10月更文挑战第3天】在Java编程中,if-else与switch语句犹如武林高手的剑与刀。本文通过示例展示如何巧妙运用这两种工具,提升代码效率与可读性。从精简if-else结构到高效使用switch语句,再到性能考量,帮助你在不同场景下做出最佳选择,让你的程序更加流畅高效。掌握这些技巧,你将在Java世界中游刃有余!
20 2
|
2月前
|
Java
Java 正则表达式高级用法
Java 中的正则表达式是强大的文本处理工具,用于搜索、匹配、替换和分割字符串。`java.util.regex` 包提供了 `Pattern` 和 `Matcher` 类来高效处理正则表达式。本文介绍了高级用法,包括使用 `Pattern` 和 `Matcher` 进行匹配、断言(如正向和负向前瞻/后顾)、捕获组与命名组、替换操作、分割字符串、修饰符(如忽略大小写和多行模式)及 Unicode 支持。通过这些功能,可以高效地处理复杂文本数据。
|
2月前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
2月前
|
Java
java基础(1)逻辑控制if、switch
本文继续介绍了Java中的基础逻辑控制语句,包括if-else语句和switch语句。文章通过示例代码展示了if-else语句如何根据条件判断执行不同的代码块,以及switch语句如何根据变量的值执行不同的case分支。还提供了一个使用Scanner类从键盘获取输入,并根据输入的数字输出对应的星期日的示例。最后提到了如何在IDEA中格式化代码。
29 2
|
3月前
|
Java C++ 开发者
if-else VS switch:谁才是Java条件判断的王者?
if-else VS switch:谁才是Java条件判断的王者?
42 3
|
3月前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
44 2
|
3月前
|
Java 开发者
超实用!一文搞懂Java中if-else和switch的正确打开方式!
超实用!一文搞懂Java中if-else和switch的正确打开方式!
59 2