java中if-else为什么比switch效率低

------- android培训java培训、期待与您交流! ----------


java中if-else为什么比switch效率低

        首先呢,if 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断;而 switch 只能对基本类型进行数值比较()。两者的可比性就仅限在两个基本类型比较的范围内。

但是jdk1.7以后,switch语句是支持字符串类型(String)的,也是支持枚举类型的,

 

if 语句每一句都是独立的,看下面的语句:
        if (a == 1) ...
        else if (a == 2) ...
这 样 a 要被读入寄存器两次,1 和 2 分别被读入寄存器一次。于是你是否发现其实 a 读两次是有点多余的,在你全部比较完之前只需要一次读入寄存器就行了,其余都是额外开销。但是 if 语句必须每次都把里面的两个数从内存拿出来读到寄存器,它不知道你其实比较的是同一个a。
于是 switch case 就出来了,把上面的改成switch case 版本:
switch (a) {
        case 0:
                break;
        case 1:
}

所以,

1.switch用来根据一个整型值进行多路分支,并且编译器可以对多路分支进行优化

2.switch-case只将表达式计算一次,然后将表达式的值与每个case的值比较,进而选
  择执行哪一个case的语句块
3.if..else 的判断条件范围较广,每条语句基本上独立的,每次判断时都要条件加载
  一次。

所以在多路分支时用switch比if..else if .. else结构要效率高。

       仅代表个人观点

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值