1. 程式人生 > >switch...case 和 if...else效率比較和優化

switch...case 和 if...else效率比較和優化

switch...case寫法:

switch (表示式){ 
case 值1 : 語句1 break; 
case 值2 : 語句2 break; 
... 
default : 語句n break; 
}

if...else寫法:

if(boolean){

}else if(boolean){

}else if(boolean){

}else{

}

由此看來,switch有點以空間換時間的意思,而事實上也的確如此。
1.當分支較多時,當時用switch的效率是很高的。因為switch是隨機訪問的,就是確定了選擇值之後直接跳轉到那個特定的分支,但是if。。else是遍歷所以得可能值,知道找到符合條件的分支。如此看來,switch的效率確實比ifelse要高的多。
2.由彙編程式碼可知道,switch...case佔用較多的程式碼空間,因為它要生成跳錶,特別是當case常量分佈範圍很大但實際有效值又比較少的情況,switch...case的空間利用率將變得很低。

3.switch...case只能處理case為常量的情況,對非常量的情況是無能為力的。例如 if (a > 1 && a < 100),是無法使用switch...case來處理的。所以,switch只能是在常量選擇分支時比ifelse效率高,但是ifelse能應用於更多的場合,ifelse比較靈活。

相關文章參考:

提高你的Java程式碼質量吧:小心switch帶來的空值異常