zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Hessian 服务端流程
    JSH面试感悟
    hibernate的update() 更新延迟或者无法更新,导致同个service调用存储过程执行方法不精确
    一个变量名引发的血案
    oracle for loop循环以及游标循环
    My97Datepicker 去掉 “不合法格式或超期范围”自动纠错限制
    获取前后n天的时间
    基于spring aop的操作日志功能
    为TIF、JPG图片添加地理坐标/平面直角坐标
    NGINX 中常规优化
  • 原文地址:https://www.cnblogs.com/kunmomo/p/10202156.html
Copyright © 2011-2022 走看看