首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

java switch case 语句

switch case 语句判断一个变量与一系列值某个值是否相等,每个值称为一个分支。...语法: switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意数量的case语句...default : //可选 //语句 } switch case 语句有如下规则: switch 语句中的变量类型可以是: byte、short、int 或者 char。...从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。 switch 语句可以拥有多个 case 语句。...当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。 当遇到 break 语句时,switch 语句终止。

1.4K20

用表驱动代替switch-case

不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源...,坏味道来自糟糕的代码(结构)设计,比如过多的switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码不对齐,那么坏味道就相当地大了。...简短的switch-case还是继续用吧,但是对于分支太多的长switch-case最好能想办法化解开,那么什么算长什么算短呢?...化解长switch-case的方法有很多种,用函数封装或者宏取代case块是治标不治本的方法,使用表驱动通常是治疗这种顽症的有效方法,本文将介绍如何用表驱动方法化解长switch-case。...前面例子switch-case语句中各个case分支参数比较简单整齐,也就是各个case分支都是用相同的参数para_in和para_out,如果各个分支使用的参数不整齐怎么办?

63950

有了 elseif 为什么还要 switch case

引出 你有没有想过既然有了if elseif, 为什么还要设计一个switch case的语法出来呢?...以下几种switch case均可以写成if else的形式(java 代码): // 形式一 switch(a){ case 1: break; case 2: break;...switch case仅支持数字和字符串相等的判断, 甚至在 C 语言中只支持数字相等(其实其他语言也只支持数字, 随便写个 java 反编译一下就会发现, 它将一个switch case转成了两个,...一个 switch case编译后的执行流程大致如下: 将每一个 case编译后代码的首地址保存到一个数组. 根据传入的值进行判断, 若数据元素不存在, 直接跳到 default....别说, 我试了几种比较流行的语言, 发现Python就不支持, 哈哈, 用了这么久Python还是突然发现它不支持switch case, 由此可见, switch case我用的比较少.

84020

2018-11-08 杀死If Else switch case(策略模式+工厂模式+map)套餐 Kill 项目中的switch case

(策略模式+工厂模式+map)套餐 Kill 项目中的switch case 接手新任务:接入第三家存证机构,看之前的代码使用了swith case判断使用哪家存证机构,每家存证机构的实现逻辑不一样...代码的坏味道:多层swich case。...= new Scanner(System.in); //选择的水果种类 String fruitType = scanner.nextLine(); switch...但是使用策略模式时,我们需要知道具体的实现类,具体的实现类需要对外暴露 使用工厂模式 将类型判断放到工厂类 工厂模式:在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象...使用工厂模式具有良好的封装性,这下妈妈再也不用关系创建类的过程,甚至连创建的实际类的都无需关心,实现了解耦,实际类的修改变化都不会影响上层业务 但是工厂类还是有很多if的,革命尚未成功,仍需要进行优化

1.6K30

一个switch case引起的线上bug

当时第一反应是不可能 2、通过QA同学提供的test case,在测试环境通过curl发送请求,发现果然广告返回值跟预期不符。 3、通过git log对比,发现近期只有一个switch语句有修改。...此处列下switch case的三个规则:switch...case的三个规则: 既无成功匹配,又无default子句,那么swtich语句块什么也不做; 无成功匹配,但有default,那么swtich...");     scanf( "%d",&iChoice);     switch (iChoice)     {     case 1:         printf("case 1 !...因为在开关主体没有出现break语句。...\n" );     }     printf("Value of i = %d",i);     return 0; } 输出: 原因: switch 的参数必须可以转换成一个整数 将default

715140

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

javac编译和javap查看: 「tableswitch」和「lookupswitch」都用于switch条件跳转,前者用于case值连续,例如上面代码的0、1、2;后者用于case值不连续。...从字节码可以看出:switchcase条件和对应代码块是分开的。...再写代码样例,这次在代码给每个case都加上break。...如果case 0匹配成功,则跳到标号28执行,执行完代码块对应的31、32指令之后,执行35的goto指令跳转到标号55,这样就跳出了switch作用范围,case 1和2也不会被执行。...结语 case的break告诉前端编译器:「给每个case对应代码块的最后加上goto」。这样,执行完匹配上的代码之后,就可以略过后面的case代码块了。

69620

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券