平時一般用if,switch用的很少,有必要簡單總結下兩者的區別:
一、對switch的理解
1、switch的括號里面放的是一個變量
2、case相對應的值是關於這個變量的一個值
3、switch里面的這個變量和case里面這個變量不會進行隱式類型的一個轉換,而是進行了恆等比較。所以一定要注意這個變量和這個case里面的值是不是一個類型。
4、關於switch里面的case會有一個穿透效果,這個效果有的時候會給我們帶來好處,有的時候會給我們帶來壞處,如果不需要這種穿透效果的時候,需要加break
5、swicth里面如果這個變量沒有匹配到case里面這個值,那么就需要返回一個信息。所以在case的末尾一定要加上一個default,這樣既給用戶的體驗比較完美,另一方面對代碼的今后維護也有很大的幫助
6、比較的值都是固定值
二、switch工作原理
1、首先設置表達式 n(通常是一個變量)
2、隨后表達式的值會與結構中的每個 case 的值做比較,如果有就執行對應的語句體,看到break就結束。
3、如果沒有匹配,就執行default的語句體。
三、注意事項
1、case后面只能是常量,不能是變量,而且,多個case后面的值不能出現相同的值
2、default可以省略嗎?可以省略,但是不建議,因為它的作用是對不正確的情況給出提示。
3、break可以省略嗎?可以省略,但是結果可能不是我們想要的,會出現一個現象:case穿透,最終我們建議不要省略
case穿透和break有關,只有當遇到break時才會終止,不然會繼續執行后面case中的代碼塊
4、default一定要在最后嗎?不是,可以在任意位置。但是建議在最后。
default的位置不會影響執行結果,不管你編寫的代碼中default放在那里,這里的條件判斷都是先按順序比較其他非default值,當這些條件都不滿足的時候,才跳轉到default的相應代碼處執行。
5、switch語句的結束條件:
(1)遇到break就結束了;
(2)執行到末尾就結束了。
四、switch和if的應用場景
if :
1、具體的值進行判斷
2、區間的判斷
3、對運算的結果是boolean類型表達式進行判斷 true false
switch:
1、對具體的值進行判斷
2、值的個數是固定的。對於幾個固定的值判斷,建議使用switch 語句。因為switch 語句會將具體的答案都加載進內存,效率相對高一點。
基於代碼的可讀性:如果條件較少時,if-else容易閱讀,而條件較多時,switch更容易閱讀