百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Java中的Switch语句:从基础到高级用法全解析

wptr33 2025-03-08 00:59 21 浏览

在Java编程中,switch语句是一种非常常见的控制流语句,用于根据变量的值执行不同的代码块。虽然switch语句看似简单,但在实际开发中,它的使用场景和技巧却非常丰富。本文将带你从基础到高级,全面解析Java中的switch语句,帮助你更好地掌握这一强大的工具。

1. Switch语句的基本语法

switch语句的基本结构如下:

switch (expression) {
    case value1:
        // 代码块1
        break;
    case value2:
        // 代码块2
        break;
    // 可以有任意数量的case语句
    default:
        // 默认代码块
}
  • expression:通常是一个整数类型(如intcharbyteshort)或枚举类型。从Java 7开始,String类型也可以作为switch的表达式。
  • case:每个case后面跟着一个常量值,表示当expression的值与该常量匹配时,执行对应的代码块。
  • break:用于跳出switch语句,防止代码继续执行下一个case
  • default:当没有任何case匹配时,执行default代码块。default是可选的。

2. Switch语句的执行流程

  1. switch语句首先计算expression的值。
  2. 然后,它会依次与每个case后的常量值进行比较。
  3. 如果找到匹配的case,则执行对应的代码块,直到遇到break语句或switch语句结束。
  4. 如果没有匹配的case,则执行default代码块(如果存在)。

3. Switch语句的常见用法

3.1 基本用法

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;
    default:
        System.out.println("Invalid day");
}

输出结果为:

Wednesday

3.2 多个case共享同一代码块

int month = 2;
switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        System.out.println("31 days");
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        System.out.println("30 days");
        break;
    case 2:
        System.out.println("28 or 29 days");
        break;
    default:
        System.out.println("Invalid month");
}

输出结果为:

28 or 29 days

4. Switch语句的高级用法

4.1 使用枚举类型

从Java 5开始,switch语句支持枚举类型。这使得代码更加清晰和类型安全。

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

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

输出结果为:

Midweek

4.2 使用String类型

从Java 7开始,switch语句支持String类型。这使得处

String fruit = "Apple";
switch (fruit) {
    case "Apple":
        System.out.println("It's an apple");
        break;
    case "Banana":
        System.out.println("It's a banana");
        break;
    default:
        System.out.println("Unknown fruit");
}

输出结果为:

It's an apple

4.3 Switch表达式(Java 12+)

从Java 12开始,switch语句可以作为一个表达式使用,并且可以使用->箭头语法来简化代码。

int day = 3;
String dayType = switch (day) {
    case 1, 2, 3, 4, 5 -> "Weekday";
    case 6, 7 -> "Weekend";
    default -> "Invalid day";
};
System.out.println(dayType);

输出结果为:

Weekday

5. Switch语句的注意事项

  • case穿透:如果忘记写break语句,程序会继续执行下一个case的代码块,直到遇到breakswitch语句结束。这有时会导致意外的结果。
  • default位置default语句可以放在switch语句的任何位置,但通常放在最后。
  • 表达式类型switch的表达式类型必须是byteshortintcharString或枚举类型。

6. 总结

switch语句是Java中非常实用的控制流工具,适用于多种场景。从基本用法到高级特性,掌握switch语句的使用技巧可以大大提高代码的可读性和效率。随着Java版本的更新,switch语句的功能也在不断增强,开发者应时刻关注新特性,以便更好地应用于实际开发中。

希望本文能帮助你更好地理解和应用Java中的switch语句。如果你有任何问题或建议,欢迎在评论区留言讨论!

相关推荐

深度剖析 MySQL 数据库索引失效场景与优化策略

在互联网软件开发领域,MySQL数据库凭借其开源、高效等特性被广泛应用。而索引,作为提升MySQL查询性能的关键利器,能大幅加速数据检索。然而,在实际开发中,即便精心创建了索引,却常常遭遇索引失...

15分钟,带你了解indexedDB,这个前端存储方案很重要!

原文来源于:程序员成长指北;作者:Django强哥如有侵权,联系删除最近在给前端班授课,在这次之前的最后一次课已经是在2年前,2年的时间,前端的变化很大,也是时候要更新课件了。整理客户端存储篇章时模糊...

MySQL 面试总被问到的那些问题,你都懂了吗?

事务的四大特性是什么?首先得提一下ACID,这可是数据库事务的灵魂所在:原子性(Atomicity):要么全部成功,要么全部失败回滚。一致性(Consistency):确保数据在事务前后都处于一致状态...

Java 字符串常见的操作_java字符串总结

在Java当中,为字符串类提供了丰富的操作方法,对于字符串,我们常见的操作就是:字符串的比较、查找、替换、拆分、截取以及其他的一些操作。在Java中,有String,StringBuffer和St...

java学习分享:Java截取(提取)子字符串(substring())

在String中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。1.substring(intbeginIndex)形...

你必须知道的 7 个杀手级 JavaScript 单行代码

1.如果你需要一个临时的唯一ID,请生成随机字符串。这个例子将为你生成一个随机字符串:constrandomString=Math.random().toString(36).slice(2)...

MySQL 索引失效:原因、场景与解决方案

在互联网软件开发领域,MySQL作为一款广泛使用的关系型数据库,其性能优化至关重要。而索引,作为提升MySQL查询性能的关键手段,一旦失效,会导致查询效率大幅下降,影响整个系统的性能。今天,就来...

Axure9 教程:可模糊搜索的多选效果

一、交互效果说明1.点击话题列表中的话题选项,上方输入框内显示选择的话题标签,最多可选择5个标签,超出将有文字提示。2.点击输入框内已选择的话题标签的删除按钮,可以删除已选择的话题标签,并且该标签返回...

JavaScript字符串操作方法大全,包含ES6方法

一、charAt()返回在指定位置的字符。...

为什么MySQL索引不生效?来看看这8个原因

在数据库优化中,最让人头疼的事情之一莫过于精心设计的索引没有发挥作用。为什么会出现这种情况?这篇文章带大家一起探讨一些常见原因,方便大家更好地理解MySQL查询优化器是如何选择索引的,以及在出现类...

Kettle实现rabbitMQ的生产与消费_rabbitmq不支持顺序消费

文章目录一、Kettle为什么可以读取流数据?...

MySQL高频函数Top10!数据分析效率翻倍,拒绝无效加班!

引言:为什么你的SQL代码又臭又长?“同事3行代码搞定的事,你写了30行?”“每次处理日期、字符串都抓狂,疯狂百度?”——不是你不努力,而是没掌握这些高频函数!本文精炼8年数据库开发经验,总结出10个...

mysql的截取函数用法详解_mysql截取指定字符

substring()函数测试数据准备:用法:以下语法是mysql自动提示的1:substirng(str,pos):从指定位置开始截取一直到数据完成str:需要截取的字段的pos:开始截取的位置。从...

MySQL函数:字符串如何截取_mysql 字符串截取函数

练习截取字符串函数(五个)mysql索引从1开始...

数据集成产品分析(一)_数据集成工具有哪些

编辑导语:数据集成产品是数据中台建设的第一环节,在构建数据中台或大数据系统时,首先要将企业内部各个业务系统的数据实现互联互通,从物理上打破数据孤岛。本文作者对数据集成产品进行了分析,一起来看一下吧。数...