下面來詳細描述switch與ifelse的區別。
switch...case與if...else的根本區別在於,switch...case會生成一個跳轉表來指示實際的case分支的地址,而這個跳轉表的索引號與switch變數的值是相等的。從而,switch...case不用像if...else那樣遍歷條件分支直到命中條件,而只需訪問對應索引號的表項從而到達定位分支的目的。
具體地說,switch...case會生成一份大小(表項數)為最大case常量+1的跳錶,程式首先判斷switch變數是否大於最大case
常量,若大於,則跳到default分支處理;否則取得索引號為switch變數大小的跳錶項的地址(即跳錶的起始地址+表項大小*索引號),程式接著跳到此地址執行,到此完成了分支的跳轉。

故,當分支較多時,當時用switch的效率是很高的。因為switch是隨機訪問的,就是確定了選擇值之後直接跳轉到那個特定的分支,但是if。。else是遍歷所以得可能值,知道找到符合條件的分支。switch和if-else相比,由於使用了Binary Tree演算法,絕大部分情況下switch會快一點。

以下有個比較詳細的介紹,連結:

http://www.l99.com/151931/blog/view/77303