专栏首页Java典籍浅谈Java中switch分支语句

浅谈Java中switch分支语句

在程序中遇到多分支选择的时候,想必大家都喜欢用if...else if...else...语句,尤其是初学者,因为在了解switch语句之前,我也是只会用if...else语句。那么现在看完这篇随笔的介绍后,你们又有了另外一种选择,使用switch语句可以增强代码的可能性,当然switch也不是随随便便就能用的,它也有语法规则的约束,请看下面的介绍。

1、switch简介和语法

switch语句用于多分支选择,由一个控制表达式和多个case标签组成。switch语句后面的控制表达式的数据类型只能是byte、short、char、int、String和枚举类型,不能是其它类型。

switch语句往往需要在case标签后紧跟一个代码块,case标签作为这个代码块的标识。

switch语句的语法如下:

switch(expr){    

    case condition1{        
        //代码块...
         break;
     }    
    case condition2{        
        //代码块...
         break;
      }
    ...   
     case conditionN{        
        //代码块...
         break;
     }
       dafault:{       
        //代码块...    
      }
}

这种分支语句的执行是先对expr求值,然后依次匹配每个case标签后的condition值,遇到匹配的值即执行对应的代码块,如果condition的值没有与expr表达式的值相等,则执行default标签后的代码块。

2、switch语句和if语句的区别

switch语句和if语句都可用于分支条件的选择,但switch后面的控制表达式只能是byte、short、char、int、String和枚举类型,不能是boolean类型,if后面的控制表达式是boolean类型;switch语句中各个case标签后代码块的开始点和结束点非常清晰,因此完全可以省略case后代码块的花括号。

3、switch的使用及注意事项

为了更清晰的认识switch,下面通过一段程序来示范switch的用法:

运行上面的程序输出:Java语言。

因为定义的变量(switch后面的控制表达式)"languageType" 与"Java"匹配。

如果把上面程序中的每个case标签里的break语句去掉,将会发生什么样的结果呢?那么我先把每个break语句注释掉,运行结果如下:

Java语言

C++语言 Python语言 语言类型输入错误

哪里不太对,但又说不上来。

输出结果是不是很奇怪!这正是switch语句的运行流程决定的,只要进入switch语句的入口,程序会一直运行下去,直到遇到break语句,如果省略了break语句,那么匹配case值后的所有情况(包括default)都会被执行。

所以,使用switch语句时,有两个值得注意的地方:

1)switch后面的控制表达式只能是byte、short、char、int、String和枚举类型;

2)如果省略了case后的代码块break,将会引入一个陷阱。

本文分享自微信公众号 - Java典籍(helloHBLing),作者:冰湖一角

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浮点型变量(float和double)和BigDecimal的使用

    带小数的变量在Java中称为浮点型,Java的浮点型有两种:float和double。

    硕人其颀
  • Java实现将中文转成拼音和ASCII码

    最近项目上遇到一个需求:模糊搜索姓名时既可以输入汉字也可以输入拼音进行搜索,这就要求在保存姓名时也要将其拼音保存起来。

    硕人其颀
  • Java对称加密算法

    1、DES 已破解,不再安全,基本没有企业在用了,是对称加密算法的基石,具有学习价值。密钥长度56(JDK)、56/64(BC)。

    硕人其颀
  • why哥被一道基础面试题给干懵了,一气之下写出万字长文。

    前段时间我发现书的最后还有两道 Java 基础的面试题。其中有一道,非常的基础,可以说是入门级的题,但是都把我干懵了。

    why技术
  • 2019二级C题库及解析(10)

    case相当于给出执行程序的入口和起始位置,若找到匹配的常量,则从此处开始往下执行程序,不再匹配常量,直至遇到break或switch结束

    用户6755376
  • PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

    Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择。以PHP来说,switch(开关语句)常和case break default一起使用

    大脸猫
  • 在Java 8下更好地利用枚举

    在我们的云使用分析API中,返回了格式化过的分析数据(这里指生成分析图)。最近,我们添加了一个特性,允许用户选择时间段(最开始只可以按天选择)。问题是,代码中每...

    哲洛不闹
  • 求连续操作(登录)数量(次数)最大的记录(用户)

    昨晚上老同事聚会,一个同事说道一个面试问题没有一个人做出来,就是求连续日期登录次数最大的用户,同事说借助 rownumber即可求解,由于是喝酒聊天,也没有说详...

    用户1177503
  • Python爬虫基础--分布式爬取贝壳网

    py3study
  • 一面颜值,一面实用,酷比魔方iwork1X试用

    用户1127987

扫码关注云+社区

领取腾讯云代金券