switch與if else的區別

2021-09-25 22:54:26 字數 673 閱讀 1736

單從jvm的執行效率上講的話,switch的執行效率要高於if語句:

原因在於:switch語句在執行時,首先會生成乙個「跳轉表」來指示實際的case分支的位址,而這個「跳轉表」的索引號與swtich中的case值是相等的,這樣的話,switch就不用像if else那樣,遍歷所有的條件,直至找到正確條件,而僅僅只需要訪問對應索引號的表項就可以到達定位分支的目的。

簡單的說,switch會生成乙個資料統計表,將case後面的值全部統計起來,匹配時先拿錶中的資料進行比較,如果有則直接跳轉到相應case語句;如果沒有,則直接跳轉到default語句

那if else呢?其實剛剛我們已經簡單的說了其工作流程,這裡再次說明一下:

if else語句需要一條一條的去進行取值範圍的判斷,直到找到正確的選項位置,這樣的話勢必會浪費大量的時間。

所以,單從其執行的效率來看,switch語句要更勝一籌。

總結1.switch語句由於它獨特的case值判斷方式,使其執行效率更高,而if else語句呢,則由於判斷機制,導致效率稍慢。

2.到底使用哪乙個選擇語句,和當前的**環境有關,如果是範圍取值,則使用if else語句更為快捷;如果是確定取值,則使用switch更是乙個不錯的選擇。

所有好的程式都是經過不斷思考,不斷琢磨,付出努力,最終得以完成的。

switch 與 if else 效能區別

最近閒來無事,就測測switch 和if else的效能區別 我的電腦是i3的。public static void main string args else if k 2 else if k 3 else if k 4 else if k 5 else if k 6 long end1 syst...

switch與ifelse的效率問題

switch與if.else 的執行的效率問題 今天讀一前輩的程式,發現其在串列埠中斷裡面為了分析協議的報文型別,在中斷函式裡面使用if.else語句。因為報文型別在現在看來只有兩種,以後有可能還會增加,不確定。本人以為這樣用有些不妥,為什麼不用switch語句呢?猜想是不是因為效率方面的考慮呢,畢...

switch與ifelse的效率問題

switch.case與if.else的根本區別在於,switch.case會生成乙個跳轉表來指示實際的case分支的位址,而這個跳轉表的索引號與switch變數的值是相等的。從而,switch.case不用像if.else那樣遍歷條件分支直到命中條件,而只需訪問對應索引號的表項從而到達定位分支的目...