一、switch基本语法格式

switch(int或者string类型的字面值或者变量){case int或者string类型的字面值或者变量 :{java语句;java语句;.....break;//记得要写## 标题break,不然会穿透}case int或者string类型的字面值或者变量 :{java语句;java语句;.....break;//记得break,不然会穿透}case int或者string类型的字面值或者变量 :{java语句;java语句;.....break;//记得break,不然会穿透}..........//可以有很多个casedefault :{java语句;java语句;......//“1、不是必须有default,有些弱类型语言是不用写的,但是为了程序更完整、更安全,建议写上default”/*2、如果default语句在所有case最后,此时可以不加break 如果default语句之后还有case语句如果不加break,则default语句执行过之后会继续下面的case语句,此时必须要在default之后加break语句,不过这种default用法是不推荐的3、当所有分支都没有匹配成功,当有default的语句的话,就执行default分支中的代码块*/}
}

在JDK6中,switch和case后面只能探测int类型。
在JDK7之后包括7版本在内,引入了新特性,switch关键字和case关键字后面可以探测int或者String类型了

二、对case穿透的理解

case穿透就是:当在switch语句中,执行case分支语句,如果满足case1,但是在case1的语句块中,没有加break;,即使case1,满足条件,程序仍然会向下执行case2,即使case2不满足条件,除非case2语句块中有break;,程序会跳出switch选择结构,否则继续执行case3,一直这样执行下去,直到整个switch语句全部执行完毕,才能结束!
下面看代码:穿透情况1+2=0;
原因是因为:1+2=3执行了但是没有break,程序又执行了1-2=-1,但是也没有break,程序有向下执行1*2=2,但是语句中还是没有break;直到1/2=0的时候才有break,之后程序结束输出1 + 2=0;
那么肯定有小伙伴奇怪了,那不应该是1/2=0吗,怎么会是1+2=0呢,
是因为是我的输出:

 System.out.print("当前的运算结果为:"+number1+operate+number2+"="+result);

我输出的是变量operate,operate匹配到的是case中的加号,而不是除号

下面是加上了break,就解决了case穿透的情况

三、case合并

例如

int i=10;
switch(i){case 1 : case 2 : case 10 :System.out.println("Test0!");
}
case 4 : case 5 : case 6 :System.out.println("Test1!");
}

当i的取值为1 , 2 ,10的时候,都会输出Test0!
当i的取值为4 , 5 ,6的时候,都会输出Test1!
其实就是把几个case分支语句给合并成一个case语句了

switch中的case穿透现象,记得break相关推荐

  1. C语言多case自动跳出,C语言switch中case后跟随break语句

    1.case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即"只是开始执行处的入口标号". 因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行: ...

  2. switch case穿透Java_Switch语句的case穿透

    Switch语句的case穿透 一 switch语句几点说明: 1. case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的. 2.case后面表达式可以接受: 基本数据类型,b ...

  3. 在switch语句中,case后的标号只能是什么?

    switch语句用于基于不同条件执行不同动作. 语法格式: switch (变量表达式) { case 常量1: 语句;break; case 常量2: 语句;break; case 常量3: 语句; ...

  4. 为什么switch里的case没有break不行

    前言 一个小姐姐拿着一个switch的选择题来问我. 之所以这么笃定地回答这个问题,并不是我知道其中原理,而是之前在一个群里,有人问了同类型的问题,我瞥了一眼记住了答案,所以才依葫芦画瓢. 小姐姐接着 ...

  5. c语言case标号是连续的吗,在switch语句中,case后的标号只能是什么?_后端开发...

    在switch语句中,case后的标号只能是常量表达式.在一个特定的switch语句中,每一个case常量都必须具有举世无双的值,不能够反复.然则switch语句能够包括多个case标签. switc ...

  6. break在java语言中什么意思,c语言中break是什么意思?

    break在switch(开关语句)中在执行一条case后跳出语句的作用. break语句通常用在循环语句和开关语句中.当break用于开关语句switch中时,可使程序跳出switch而执行swit ...

  7. java break在switch_java中switch case语句需要加入break的原因解析

    java中switch case语句需要加入break的原因解析 java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,大家可以参考下 ...

  8. C语言switch中break的作用,C语言中switch...case语句中break的重要性

    在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题.话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf ...

  9. switch case穿透Java_Java switch的用法与case的穿透现象举例详解

    switch和if-else的用法类似: if(x == 3) { }else if(x == 30) { }else if(x == -6) { }else { }等同于switch的: switc ...

最新文章

  1. xml python2.6_如何使用前缀选项解析python 2.6中的参数为-f file.xml
  2. Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略
  3. list set map 各自实现类的区别以及它们的底层原理和实现(部分)
  4. BCB 编写 DLL 终极手册
  5. 1 客户端性能--浏览器页面处理
  6. TCP/IP的四层负载均衡
  7. JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼?
  8. php制作后台驻留执行 ,同时提前返回逻辑信息进行判断的实例
  9. python 绘制图表生成svg文件_python用Pygal如何生成漂亮的SVG图像详解
  10. java防止浏览器直接打开下载的文件
  11. 对Windows学习的总结
  12. 虚拟机下载-下载windows镜像
  13. AB1562_UT软件分辨真假洛达1562A,洛达1562a怎么鉴别?
  14. 学生选课系统软件测试报告,学生选课系统-软件可用性测试实验
  15. matlab画进化树分析图,系统发育(进化)树绘制小结
  16. 批处理删除文件夹命令_批处理文件夹命令
  17. m序列 MATLAB仿真
  18. 实验报告C语言顺序结构程序,顺序结构程序设计-C语言程序实验报告
  19. MacBook Air(2012)维修笔记
  20. 英语说10点20有计算机课,101 projects  in 1001 days实例

热门文章

  1. 【例子】一个小益智游戏(过河游戏)的求解
  2. 试谈中国地理环境与中国文化的联系
  3. Python机器学习与实践——简介篇
  4. Gallery4.2 代码研究(一):Gallery2结构分析
  5. 教育的本质是国家和民族的传承
  6. 软件测试的培训机构靠谱吗
  7. 高新技术企业认定时间
  8. Qt实现不规则按钮之自绘圆盘式按钮
  9. Keka for Mac(压缩解压工具)中文破解版
  10. GitHub 著名开源项目作者删库跑路,神秘 Bug 影响超 20000 个项目!