Java switch case语句详解

这篇具有很好参考价值的文章主要介绍了Java switch case语句详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java switchcase,java,开发语言,Powered by 金山文档

if…else 语句可以用来描述一个“二岔路口”,我们只能选择其中一条路来继续走,然而生活中经常会碰到“多岔路口”的情况。switch 语句提供了 if 语句的一个变通形式,可以从多个语句块中选择其中的一个执行。

switch 语句格式

switch 语句是 Java 的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。因此,它提供了一个比一系列 if-else-if 语句更好的选择。

switch 语句的基本语法形式如下所示:

switch(表达式){
case 值1:
        语句块1;
break;
case 值2:
        语句块2;
break;
    …
case 值n:
        语句块n;
break;
default:
        语句块n+1;
break;
}

其中,switch、case、default、break 都是 Java 的关键字。

1)switch

表示“开关”,这个开关就是 switch 关键字后面小括号里的值,小括号里要放一个整型变量或字符型变量。表达式必须为 byte,short,int,char类型。

Java7 增强了 switch 语句的功能,允许 switch 语句的控制表达式是 java.lang.String 类型的变量或表达式。只能是 java.lang.String 类型,不能是 StringBuffer 或 StringBuilder 这两种字符串的类型。

2)case

表示“情况,情形”,case 标签可以是:

  • 类型为 char、byte、 short 或 int 的常量表达式。

  • 枚举常量。

  • 从 Java SE 7 开始, case 标签还可以是字符串字面量。

例如:

String input =...;
switch(input.toLowerCase()){// toLowerCase用于将大写字符转换为小写
case"yes":
...
break;
}

当在 switch 语句中使用枚举常量时,不必在每个标签中指明枚举名,可以由 switch 的表达式值确定。例如:

Size sz =...;
switch(sz){
case SMALL:// no need to use Size.SMALL
...
break;
...
}

注意:重复的 case 值是不允许的。

3)default

表示“默认”,即其他情况都不满足。default 后要紧跟冒号,default 块和 case 块的先后顺序可以变动,不会影响程序执行结果。通常,default 块放在末尾,也可以省略不写。

4)break

表示“停止”,即跳出当前结构。

如果在 case 分支语句的末尾没有 break 语句,有可能触发多个 case 分支。那么就会接着执行下一个 case 分支语句。这种情况相当危险,常常会引发错误。为此,我们在程序中从不使用 switch 语句。

如果你喜欢 switch 语句,编译代码时可以考虑加上 -Xlint:fallthrough 选项,如下所示:

javac -Xlint:fallthrough Test.java

这样一来,如果某个分支最后缺少一个 break 语句,编译器就会给出一个警告消息。

switch 语句的执行过程如下:表达式的值与每个 case 语句中的常量作比较。如果发现了一个与之相匹配的,则执行该 case 语句后的代码。如果没有一个 case 常量与表达式的值相匹配,则执行 default 语句。当然,default 语句是可选的。如果没有相匹配的 case 语句,也没有 default 语句,则什么也不执行。

java switchcase,java,开发语言,Powered by 金山文档

图 1 switch语句执行流程图

例 1

在节目的抽奖环节里,节目组会根据每位嘉宾的座位号来进行抽奖游戏,根据不同的号码来决定奖项的大小。使用 switch 语句编写 Java 程序来完成奖项分配,其实现代码如下。

publicstaticvoidmain(String[] args){
    System.out.println("请输入座位号码:");
Scanner sc =newScanner(System.in);
int num = sc.nextInt();
switch(num){
case8:
        System.out.println("恭喜你,获得了三等奖!");
break;
case88:
        System.out.println("恭喜你,获得了二等奖!");
break;
case888:
        System.out.println("恭喜你,获得了一等奖!");
break;
default:
        System.out.println("谢谢参与!");
break;
}
}

当用户输入的号码为 888 时,获取的 num 值为 888,则与第三个 case 后的值匹配,执行它后面的语句,输出“恭喜你,获得了一等奖!”,然后执行 break 语句,跳出整个 switch 结构。如果输入的号码与 case 中的值都不匹配,则执行 default 后的语句。

程序执行结果如下所示:

请输入座位号码:
888
恭喜你,获得了一等奖!
请输入座位号码:
88
恭喜你,获得了二等奖!
请输入座位号码:
66
谢谢参与!
例 2

编写一个 Java 程序,根据当前的星期数字输出对应的汉字。在这里使用包含 break 的 switch 语句来判断当前的星期,实现代码如下:

publicstaticvoidmain(String[] args){
String weekDate ="";
Calendar calendar = Calendar.getInstance();// 获取当前时间
int week = calendar.get(Calendar.DAY_OF_WEEK)-1;// 获取星期的第几日
switch(week){
case0:
            weekDate ="星期日";
break;
case1:
            weekDate ="星期一";
break;
case2:
            weekDate ="星期二";
break;
case3:
            weekDate ="星期三";
break;
case4:
            weekDate ="星期四";
break;
case5:
            weekDate ="星期五";
break;
case6:
            weekDate ="星期六";
break;
}
    System.out.println("今天是 "+ weekDate);
}

本程序首先获取当前的星期值,然后使用 switch 语句判断 week 的值:0 表示星期日,1 表示星期一,2 表示星期二……以此类推,6 表示星期六。只要 week 值与 case 值相符合,则程序将执行该 case 中的语句,并跳出 switch 语句,输出结果。

运行程序,输出的结果如下:

今天是星期五

嵌套 switch 语句

可以将一个 switch 语句作为一个外部 switch 语句的语句序列的一部分,这称为嵌套 switch 语句。因为一个 switch 语句定义了自己的块,外部 switch 语句和内部 switch 语句的 case 常量不会产生冲突。例如,下面的程序段是完全正确的:

publicstaticvoidmain(String[] args){
switch(count){
case1:
switch(target){
case0:
                System.out.println("target is zero");
break;
case1:
                System.out.println("target is one");
break;
}
break;
case2:// ...
}
}

本例中,内部 switch 语句中的case 1:语句与外部 switch 语句中的case 1:语句不冲突。变量 count 仅与外层的 case 语句相比较。如果变量 count 为 1,则变量 target 与内层的 case 语句相比较。

学到这里我们可以发现以下几点:

  • switch 语句不同于 if 语句的是 switch 语句仅能测试相等的情况,而 if 语句可计算任何类型的布尔表达式。也就是 switch 语句只能寻找 case 常量间某个值与表达式的值相匹配。

  • 在同一个 switch 语句中没有两个相同的 case 常量。当然,外部 switch 语句中的 case 常量可以和内部 switch 语句中的 case 常量相同。

  • switch 语句通常比一系列嵌套 if 语句更有效。

最后一点尤其有趣,因为它使我们知道 Java 编译器如何工作。当编译一个 switch 语句时,Java 编译器将检查每个 case 常量并且创造一个“跳转表”,这个表将用来在表达式值的基础上选择执行路径。因此,如果你需要在一组值中做出选择,switch 语句将比与之等效的 if-else 语句快得多。

编译器可以这样做是因为它知道 case 常量都是同类型的,所要做的只是将它与 switch 表达式相比较看是否相等。对于一系列的 if 表达式,编译器就无此功能。

if 语句和 switch 语句的区别

if 和 switch 语句都表示条件语句,可以从使用效率和实用性两方面加以区分。

1. 从使用效率上区分

从使用效率上区分,在对同一个变量的不同值作条件判断时,既可以使用 switch 语句,也可以使用 if 语句。使用 switch 语句的效率更高一些,尤其是判断的分支越多,越明显。

2. 从实用性上区分

从语句的实用性角度区分,switch 语句不如 if 条件语句,if 语句是应用最广泛和最实用的语句。

3. 何时使用 if 语句和 switch 语句

在程序开发的过程中,何时使用 if 语句和 switch 语句,需要根据实际情况而定,应尽量做到物尽其用。不能因为 switch 语句的效率高就一直使用,也不能因为 if 语句常用就不用 switch 语句。需要根据实际情况,具体问题具体分析,使用最适合的条件语句。

一般情况下,对于判断条件较少的,可以使用 if 条件语句,但是在实现一些多条件的判断中,最好使用 switch 语句。文章来源地址https://www.toymoban.com/news/detail-602020.html

到了这里,关于Java switch case语句详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Switch 语句——Switch Case 示例

    在 3.10 版本之前,Python 从来没有实现 switch 语句在其他编程语言中所做的功能。 所以,如果你想执行多个条件语句,你将不得不使用elif这样的: 从 3.10 版本开始,Python 实现了一个称为“结构模式匹配”的 switch case 特性。您可以使用match和case来实现此功能。 有

    2024年02月12日
    浏览(52)
  • 超级进化吧switch case in java

    因为长情是古董,所以假货特别多 觉得太长可以直接看总结就可以了 Switch case语句在Java中是一种流程控制结构,用于将一个值与一系列可能的情况进行比较,并根据匹配的情况执行相应的代码块。在不同的Java版本中,switch case标签的用法略有不同。 Java 6及以下 | 整数当道

    2023年04月08日
    浏览(44)
  • switch语句每个case后一定要有break吗?

    java和c/c++差不多,就用java代码解释吧 先说结论:不一定要break!!! 如果case后面没有break,那么则会无视下个case的条件执行下一个case,直到再次出现一个break跳出循环 上对比代码: 代码的意思就是键盘输入一个a,如果a=1,就执行case中的内容。 我们输入1,结果是2(如图:

    2024年02月11日
    浏览(34)
  • java jdk8 switch case中无法使用枚举问题解决

    之前常规写法: 代码会报错: 此时在枚举中添加方法: 代码中改为: idea自编译不报错, 经测试也可以用 枚举完整代码: 参考: 「Java基础入门」Java中switch怎么使用枚举 - 掘金

    2024年04月25日
    浏览(45)
  • C# switch case语句入门and业务必知点

    具体的语法形式如下。 switch(表达式) {     case 值 1:         语句块 1;         break;     case 值 2:         语句块 2;         break;         ...     default:         语句块 n;         break; } 在这里,switch 语句中表达式的结果必须是整型、字符串类型、字符型、布尔型等数据

    2023年04月21日
    浏览(56)
  • C 语言中的 switch 语句和 while 循环详解

    替代多重 if..else 语句,可以使用 switch 语句。 switch 语句用于选择多个代码块中的一个来执行 switch 表达式只会被计算一次 表达式的值与每个 case 的值进行比较 如果找到匹配,则执行相应的代码块 break 语句用于跳出 switch 块并停止执行 default 语句是可选的,如果找不到匹配的

    2024年02月04日
    浏览(39)
  • Java 流程控制 Switch 语句

    一、什么是Switch语句? Switch语句是Java中的一种流程控制语句,用于根据表达式的值选择不同的执行路径。Switch语句通常用于多个条件的判断,比如根据用户输入的不同选项执行不同的操作。 二、语法说明 Switch语句的基本语法如下: Switch语句包含一个表达式和多个case语句块

    2024年02月09日
    浏览(49)
  • Java基础入门篇——Switch条件语句(十一)

    目录 一、switch条件语句 二、Scanner类使用 三、数据的输出 四、continue语句使用 Switch语句是一种条件语句,用于基于不同的条件值执行不同的代码块。它可以简化多个 if-else if-else 嵌套语句的结构。  Switch条件语句的基本结构: 在Switch语句中,一个表达式的值将与多个case进行

    2024年02月13日
    浏览(46)
  • 【C语言分支语句详解】:if,switch,让你的程序流程得心应手!

    🎥 屿小夏 : 个人主页 🔥个人专栏 : C语言详解 🌄 莫道桑榆晚,为霞尚满天! C语言中的控制语句是程序设计中不可或缺的重要组成部分。从简单的if语句到复杂的多分支结构,掌握这些语句对于编写高效、灵活的程序至关重要。本文将深入探讨C语言中控制语句的各种形

    2024年02月04日
    浏览(55)
  • 【JavaSE专栏12】Java 的 switch 条件语句

    作者主页 :Designer 小郑 作者简介 :Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。热爱技术、专注业务、开放合作、乐

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包