• switch变种玩法


    标准版本:
    switch(表达式) {       
            case 值1:
                语句体1;
                break;
            case 值2:
                语句体2;
                break;
            ...
            default:
                语句体n+1;
                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 = 2;
        int y = 3;
        switch(x){
            default:
                y++;
            case 3:
                y++;
            case 4:
                y++;
        }
        System.out.println("y="y);  //答案为6,虽然在case里面都不匹配,但由上而下穿透,依次加1
        System.out.println("---------------");
        
        int a = 2;
        int b = 3;
        switch(a){
            case 3:
                b++;
            case 4:
                b++;
            default:
                b++;
            case 5:
                b++
        }
        System.out.println("b="b);  //答案为5,虽然在case里面都不匹配,从default开始穿透,依次加1
        System.out.println("---------------");
        
        int c = 4;
        int d = 3;
        switch(c){
            case 3:
                d++;
            case 4:
                d++;
            default:
                d++;
            case 5:
                d++;
                break;
            case 6:
                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

  • 相关阅读:
    .net环境变量 的设置
    情人节我们依旧单身(制作属于自己的QQ拼音皮肤)(带全部ps素材)
    sqlServer 中 正则表达式的使用(regexReplace函数)及配置(转)
    winform开发日常问题小记
    Ext 界面开发工具 Ext Designer 破解补丁
    中关村海龙大厦买本上当经历给大家提个醒
    [原创]Ext Panel 收缩时显示收缩文本
    解决php json_encode 出现的中文转码、乱码问题
    js获取get方式提交的参数返回json格式数据
    解决php的$美元符号与Zen Coding冲突问题
  • 原文地址:https://www.cnblogs.com/kunmomo/p/10202156.html
Copyright © 2020-2023  润新知