一、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. 腾讯云TDSQL数据库核心技术理论取得进展 ,同时发布数据异常检测工具
  2. unknown error 1130,unknown error 1045
  3. SAP QM QP02 没有ECO试图直接修改检验计划主数据?
  4. Tortoise SVN 版本控制常用操作汇总(show log)
  5. (iPhone)怎样从photo album中获取所有图片 “****TWO*****” ---》 获取所有图片从Photo Album?...
  6. spark-shell连接数据库java.sql.SQLSyntaxErrorException: Unknown databas
  7. gNB,ng-eNB和NR
  8. 【图解分布式架构】看不懂直接面壁
  9. Ubuntu 20.04更换下载源阿里云
  10. Linux shell中在vim打开的文件中查找关键字
  11. Nacos 介绍 --- 单机、集群部署
  12. 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
  13. 安装 EoLinker_4.0 开源版
  14. vsftpd安装包下载
  15. 计算机内码和国际码的转换,汉字机内码、国标码和区位码之间转换关系图
  16. 简单三步下载网页微博中的视频
  17. 大卫 异星觉醒 机器人_吓坏无数人的《异星觉醒》,怎么最后还招恨了?
  18. 全球及中国冷冻减脂行业需求趋势及投资策略分析报告2022-2028年
  19. 解决笔记本电脑连的上WIFI但上不了网问题
  20. nodejs完成从163邮箱发送邮件到qq邮箱

热门文章

  1. Word2003入门动画教程79:在Word中插入Excel图表
  2. 判断各种浏览器360,火狐,搜狗,遨游,世界之窗,绿色,qq,猎豹等待
  3. BWT(Burrows-Wheelter Transform)算法
  4. 原创:sqlite数据库转换为mysql数据库
  5. tgp Linux 饥荒,饥荒TGP联机版专用服务器设置
  6. 五个最好用的记事本软件
  7. 编译arm-linux驱动时报错:“unrecognized command line option ‘-fstack-protector-strong’”
  8. 三门问题python 编程_趣味编程:三门问题
  9. 微信独家防封秘籍 易被封号的几种原因及解封方法
  10. 汽车以太网技术发展现状与趋势探究