Java中if…else和三目運算符的性能比較:
什麼是三元運算符呢!無疑其操作元有三個。第一個是表達式,剩餘兩個是值,條件表達式為真時,取第一個值,為假時,取第二個值。
示例代碼如下:
boolean a = 20 < 45 ? true : false
三元運算符的優先級高于指派運算符,故第一個表達式為真,取第一個值,傳回 a=true;
三元運算符用于做判斷,其等價的if-else語句如下:
boolean a;
if (20 < 45) {
a = true;
}else{
a = false;
}
很多時候三元運算符可以和if-else語句進行互換,它們兩個可以等價的實作判斷的效果,但是三元運算符和if-else還是有不同之處的,下面我們來具體談談不同之處:
第一
兩者之間對于傳回值有不同的要求。三元運算符是必須要有傳回值的要求,其運算後一定有一個傳回值傳回給開發人員使用,而if-else不一定有傳回值,其執行結果可能是指派語句或者是輸出語句。
第二
兩者的性能不同。三元運算符的運算性能高于if-else。
第三
兩者使用範圍不同,在ireport的一些動态執行的情況下,隻能用三元運算符而不能用if-else語句,當然在大多數情況下兩者是可以等價互換的
第四
兩者的語言特性不同,三元運算符設計到一種雙目運算符提升的特性,
所謂雙目數值提升,在雙目運算符java的開發環境下可以簡單的了解為類型轉換的問題。
1.如果定義了資料類型的變量和未定義資料類型的變量參與雙目運算符的後雙目運算,那麼傳回的結果就是範圍大(精度高)的類型。
2.如果兩個定義了資料類型的變量參與雙目運算符的後雙目運算,那麼傳回的結果就是範圍大(精度高)的類型。
3.如果直接進行數值的比較,則自動轉型為範圍大(精度高)的類型。
A.從類型轉換上看
因為三目運算符在做判斷的時候需要考慮到類型轉換的問題,同時在一定的情況下顯得不是那麼靈活。而if else 不需要考慮類型轉換,也相對于三目運算符較為簡單靈活。
是以 if else 效率高一點。
B.從總體上看
A:需要考慮到循環自身所占用的時間。
B:需要考慮到指派以及循環内的其他運算符所占用的時間。
是以 三目運算符效率高一點.