java程序中不用switch的打工人不是好程序员

呸,标题党

简单使用

  switch的case语句可以处理int,short,byte,char类型的值,枚举类型(JDK1.5支持)String(JDK1.7支持),但是不能处理long、Double,等类型,因为short,byte,char都会转换成int进行处理,这一点也可以从生成的字节码看出。
在这里插入图片描述

    @Test
    public void test05(){
        int i=0;
        switch (i){
            case 0:
                System.out.println(1);
                break;
            case 1:
                System.out.println(0);
                break;
            default:
                System.out.println("default");
        }
    }

  switch、break、default等关键字不在这里重复了,只提一点 case 标签必须为字符串常量或字面量。

性能使用

  其实这个问题有点杠,对于if…else和switch的选择,一般情况下还是需要根据业务决定的,比如说if中的条件判断,不够生搬硬套到switch中,再比如根据条件判断是否执行某一段代码这种需求,总是要用到if…else的。性能方面分析下面这两种情况做一个说明:

  1. 如果需求明知道多数情况下会走第一个if后的语句
    @Test
    public void test06(){
        if(true){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
    }

  这种类型的判断大部分情况下走的是第一条语句,所有采用if的性能足够好,不行要在做判断。

  1. 多数情况下需要走多个判断才能找到结果
        switch ("a"){
            case "abc":
                System.out.println("abc");
                break;
            case "ab":
                System.out.println("ab");
                break;
            case "a":
                System.out.println("a");
                break;
            default:
                System.out.println("default");
        }

  这种情况下,如果采用if的判断方式,需要走过3步才能执行成功:==abc、==ab、==a,而对于switch语句,只需一步即可达到目的,由于采用的是Binary Tree算法,直接跳转,不需要逐个比较查询,这种方式类似于map的空间换时间

switch和if语句的区别

 * 分支较多时,用switch的效率很高,不管有多少case,都直接跳转,不需逐个比较查询
 * switch...case只能处理case为常量的情况,相对于if...else则灵活的多
 * switch的效率与分支数无关。当只有分支比较少的时候,if效率比switch高(因为switch有跳转表)

阿里巴巴开发规范中提到的问题

在这里插入图片描述
#NullPointerException
  具体原因见下图:
在这里插入图片描述
  开头说的short,byte,char都会转换成int进行处理

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值