1. 程式人生 > >java中 若有多個判斷條件 switch比if效率更高

java中 若有多個判斷條件 switch比if效率更高

剛剛也就個人想了解下,在此整理下兩者之間的對比及效率更優的原因

兩者對比:

1、兩者都是條件比較語句,但是IF的比較範圍更廣,IF能處理所有的boolean型別的結果值,switch只能處理byte、short、int型別的數值比較。

2、兩者都是在匹配後執行程式碼塊,IF會按順序執行直到匹配正確條件,執行完該程式碼塊,後續不加選擇跳出,switch則是從匹配程式碼塊處開始往下執行,只有遇到break才跳出,否則執行到最後。

switch比if效率更優原因:

首先,我們都知道switch只能進行整型數值判斷,既然是整形那麼這裡的問題就來了,我們知道,一般的區域性變數都儲存在堆疊裡面,當我們要進行運算的時間讀入了暫存器,

那麼對於多個數值的比較,如下:

(1)、IF說明:

int a  =10;

if(a==1){}elseif(a==2){}elseif(a==10){}else{} 這段程式碼,對於a,在每次比較時,都會把a從堆疊中讀入暫存器,直到匹配a==10,這樣會造成多次讀入,而暫存器不會識別這是同一個變數,造成執行過程中的資源浪費。

(2)、switch說明:

int a =10;

switch(a){case 1: break; case 2:break;case 10:break;default:;} 這段程式碼,中,swith最開始會將整個switch中的比較引數載入到記憶體,在我們傳入引數a的時候,只需要讀取一次a變數,然後直接匹配記憶體中的變數10所在地址,減少了匹配中進行比較的次數,用記憶體空間代價換區時間效率,同時在載入變數時也減少了資源的浪費。

綜上,在使用明確數值比較的條件語句時,從效率跟時間上,switch效率要優於if。