-------
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