java if switch 效率高,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值