标准版本:
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. 如何指定一个计划和目标——6W

    作为一名IT人员,需要自己指定一个计划和目标,来保证完成进度和高效的完成任务. 参考管理学如何制作计划和目标的,套用过来,也是同样适用的.来先看看管理学的相关知识吧. 计划的概念:计划是为实现组织目标 ...

  2. python 初始socket

    一.网络基础 1.c\s架构:客户端英文名称:Client(使用服务端的服务),服务端英文名称:Server 软件c\s架构:QQ.微信.优酷.暴风影音.浏览器(IE.火狐,360浏览器等): 软件b ...

  3. margin-left:-20px

    对于负的margin值,设置其作用时要和position:absolute;一起使用

  4. C. Meaningless Operations Codeforces Global Round 1 异或与运算,思维题

    C. Meaningless Operations time limit per test 1 second memory limit per test 256 megabytes input sta ...

  5. postgresql + mybatis insert主键自增方法

    postgresql + mybatis插入记录时设置自增主键方法: 一.数据库设置主键自增 1.数据库中id字段选择serial4类型后,会在默认值中生成 nextval('app_id_seq': ...

  6. 基于Django rest framework 和Vue实现简单的在线教育平台

      一.基于api前端显示课程详细信息 1.调整Course.vue模块 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...

  7. Jmeter插件安装及使用

    1 安装Plugins Manager插件 1.1 下载Plugins Manager插件 插件下载官方地址:https://jmeter-plugins.org/downloads/all/ 将下载 ...

  8. 理解 tf.Variable、tf.get_variable以及范围命名方法tf.variable_scope、tf.name_scope

    tensorflow提供了通过变量名称来创建或者获取一个变量的机制.通过这个机制,在不同的函数中可以直接通过变量的名字来使用变量,而不需要将变量通过参数的形式到处传递. 1. tf.Variable( ...

  9. 解决VS Code使用code runner开发Python乱码问题

    微软开发的VS Code是一个跨平台的文本编辑器,通过各种插件,可以把自己武装成无所不能的IDE. 刚刚安装完VS Code时,迫不急待地安装了C/C++.Python以及Code Runner插件, ...

  10. java 常用

    1.使用第三方PageHelper分页对象 Page<MallCashcouponUser> page = PageHelper.startPage(mallCashcouponUser. ...