• 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

  • 相关阅读:
    全面分析 Spring 的编程式事务管理及声明式事务管理
    100句唤醒自己的励志名言
    100句自我激励的名言佳句
    java反射详解
    JAVA中的反射机制
    【BZOJ1015】【JSOI2008】星球大战Starwar(离线并差集)
    【HEOI2016/TJOI2016】排序(二份答案+线段树)
    【USACO06DEC】—牛奶模式Milk Patterns(后缀自动机)
    【HNOI2016】—找相同字符(后缀自动机)
    【AHOI2013】—差异(后缀自动机)
  • 原文地址:https://www.cnblogs.com/kunmomo/p/10202156.html
Copyright © 2020-2023  润新知