一、if-else
只是單純地一個接一個比較;if...else每個條件都計算一遍;
二、switch
使用了Binary Tree算法;絕大部分情況下switch會快一點,除非是if-else的第一個條件就為true
編譯器編譯switch與編譯if...else...不同。不管有多少case,都直接跳轉,不需逐個比較查詢;switch只計算一次值,然后都是test , jmp,
有很多else if的時候,用switch case比較清晰
switch使用查找表的方式決定了case的條件必須是一個連續的常量。而if-else則可以靈活的多。
三、總結
當只有分支比較少的時候,if效率比switch高(因為switch有跳轉表)
分支比較多,那當然是switch
四、switch case語句
switch (表達式){
case 值1 : 語句1
break;
case 值2 : 語句2
break;
...
default : 語句n
break;
}
從表達式值等於某個case語句后的值開始,它下方的所有語句都會一直運行,直到遇到一個break為止。隨后,switch語句將結束,程序從switch結束大括號之后的第一個語句繼續執行,並忽略其他case。
假如任何一個case語句的值都不等於表達式的值,就運行可選標簽default之下的語句。
假如表達式的值和任何一個case標簽都不匹配,同時沒有發現一個default標簽,程序會跳過整個switch語句,從它的結束大括號之后的第一個語句繼續執行。
