标准版本:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+;
break;
}
  • switch:说明这是switch语句。
  • 表达式:可以是byte,short,int,char

​ JDK5以后可以是枚举

​ JDK7以后可以是字符串

  • case:后面的值就是要和表达式进行比较的值
  • break:表示程序到这里中断,跳出switch语句
  • default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else

“作死”用法

要彻底弄懂switch语句,就要明白default在不同位置,语句中是否包含break的各种语句组合可能性。归纳一下,其实很简单,大约就下面三种具有代表性的可能。我们稍微“作一下”,看大家是否还能快速地解出正确的答案呢?

class SwitchTest {
public static void main(String[] args) {
int x = ;
int y = ;
switch(x){
default:
y++;
case :
y++;
case :
y++;
}
System.out.println("y="y); //答案为6,虽然在case里面都不匹配,但由上而下穿透,依次加1
System.out.println("---------------"); int a = ;
int b = ;
switch(a){
case :
b++;
case :
b++;
default:
b++;
case :
b++
}
System.out.println("b="b); //答案为5,虽然在case里面都不匹配,从default开始穿透,依次加1
System.out.println("---------------"); int c = ;
int d = ;
switch(c){
case :
d++;
case :
d++;
default:
d++;
case :
d++;
break;
case :
d++;
}
System.out.println("d="d); //答案为6,从case 4开始到case 5遇到break结束,依次加1
System.out.println("---------------");
}

由上面的结果可以看出,不同的格式,他们所得出的结果也就不同。但以上的“作死”用法只是为了让大家更加深入地了解switch的机制,一般不会用到的。

注意事项:

  • case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
  • default可以省略吗?

    可以,但不建议,因为它的作用是对不正确的情况给出提示。

  • break可以省略吗?

    可以,但不建议,因为会出现case穿透现象。

  • default一定要在最后吗?

    可以在任意位置,但是再不同的位置产生的效果也就不一样

  • switch语句的结束条件

    • 遇到break就结束
    • 执行到末尾就结束
      .
      .

参考:https://www.jianshu.com/p/7d4afd256142

switch变种玩法的更多相关文章

  1. C#9.0 终于来了,带你一起解读Pattern matching 和 nint 两大新特性玩法

    一:背景 1. 讲故事 上一篇跟大家聊到了Target-typed new 和 Lambda discard parameters,看博客园和公号里的阅读量都达到了新高,甚是欣慰,不管大家对新特性是多 ...

  2. 超详细的格式化输出(format的基本玩法)

    一.format的基本玩法 一.什么是format format是字符串内嵌(字符串内嵌:字符串中再嵌套字符串,加入双引号或单引号)的一个方法,用于格式化字符串.以大括号{}来标明被替换的字符串 fo ...

  3. [C#] 软硬结合第二篇——酷我音乐盒的逆天玩法

    1.灵感来源: LZ是纯宅男,一天从早上8:00起一直要呆在电脑旁到晚上12:00左右吧~平时也没人来闲聊几句,刷空间暑假也没啥动态,听音乐吧...~有些确实不好听,于是就不得不打断手头的工作去点击下 ...

  4. git分布式版本控制玩法

    git分布式版本控制玩法 Git distributed version control play github的配置安装步骤:1.下载git bash(从http://www.git-scm.com ...

  5. 自定义 checkbox 新玩法 ?

    自定义 checkbox 新玩法 ? 第一步:selector 编写 drawable/selector_checkbox_voice.xml <?xml version="1.0&q ...

  6. 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)

    版权声明:本文由阁主的小跟班原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/695994001482226944 来源:腾云 ...

  7. 十五天精通WCF——第九天 高级玩法之自定义Behavior

    终于我又看完了二期爱情保卫战,太酸爽了,推荐链接:http://www.iqiyi.com/a_19rrgublqh.html?vfm=2008_aldbd,不多说,谁看谁入迷,下面言归正传, 看看这 ...

  8. 《Invert》开发日志01:核心玩法设计

    前面提过,这个游戏的核心玩法基于我做的第一个Unity游戏,名字就叫<Invert>,现在在应用宝上面还能搜到.不过那个游戏也不是我原创的,它的玩法设计来自github上的一个开源项目(h ...

  9. ExceptionLess新玩法 -- 审计日志

    审计日志 这算是一个挺酷的功能,把每个请求都记录下来,之前在abp中看到过这个功能,配合可视化的界面,简直是在装逼 看到了exceptionless后,心念一动,我也可以根据它做一个审计日志的功能.这 ...

随机推荐

  1. CISCO 动态路由(OSPF)

    OSPF(开放式最短路径优先):是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由.是对链路 ...

  2. MySQL高级知识(四)——Explain

    前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句.explain主要用于分析查询语句或表结构的性能瓶颈. 注:本系列随 ...

  3. 【2017山东day7】养猫

    [2017山东day7]养猫 Description 你养了一只猫,为了让它快乐地成长,你需要合理地安排它每天的作息时间.假设一天分为$ n \(个时刻,猫在每个时刻要么是吃东西,要么是睡觉.在第\) ...

  4. 如何在excel单元格中插入图片批注

    在excel单元格中插入图片批注的方法: 1.选定要插入图片的单元格,然后右键选择插入批注. 2.然后会插入一个批注框,为了不影响图片效果,可以将批注文字都删除.然后鼠标移动到批注框边角再右键. 3. ...

  5. ORM-面向对象&关系数据库

    ORM-面向对象&关系数据库 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程 ...

  6. UVA12563-Jin Ge Jin Qu hao(动态规划基础)

    Problem UVA12563-Jin Ge Jin Qu hao Accept: 642  Submit: 7638Time Limit: 3000 mSec Problem Descriptio ...

  7. 爬取伯乐在线文章(五)itemloader

    ItemLoader 在我们执行scrapy爬取字段中,会有大量的CSS或是Xpath代码,当要爬取的网站多了,要维护起来很麻烦,为解决这类问题,我们可以根据scrapy提供的loader机制. 导入 ...

  8. Control4系统对接arduino

    https://www.chowmainsoft.com/arduino int digitalState[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; v ...

  9. 使用 OAuth2-Server-php 搭建 OAuth2 Server

    Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后,发现了几个 OAuth2 的客户端扩展,但是并没有找到可以作为 OAuth2 Server 的 ...

  10. Numpy数组的保存与读取

    1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...