什么是三元運算符呢!
無疑其操作元有三個。第一個是表達式,剩余兩個是值,條件表達式為真時,取第一個值,為假時,取第二個值。
表達式1和表達式2要為可以可以賦給接收變量的類型(或可以自動轉換/可以強制轉換)
示例代碼如下:
boolean a = 20 < 45 ? true : false
三元運算符的優先級高於賦值運算符,故第一個表達式為真,取第一個值,返回 a=true;
三元運算符用於做判斷,其等價的if-else語句如下:
boolean a;
if (20 < 45) {
a = true;
}
else{
a = false;
}
很多時候三元運算符可以和if-else語句進行互換,它們兩個可以等價的實現判斷的效果,但是三元運算符和if-else還是有不同之處的,下面我們來具體談談不同之處:
1、 兩者之間對於返回值有不同的要求。三元運算符是必須要有返回值的要求,其運算后一定有一個返回值返回給開發人員使用,而if-else不一定有返回值,其執行結果可能是賦值語句或者是輸出語句。
2、兩者的性能不同。三元運算符的運算性能高於if-else。
3、兩者使用范圍不同,在ireport的一些動態執行的情況下,只能用三元運算符而不能用if-else語句,當然在大多數情況下兩者是可以等價互換的 。
4、兩者的語言特性不同,三元運算符設計到一種雙目運算符提升的特性,
所謂雙目數值提升,在雙目運算符java的開發環境下可以簡單的理解為類型轉換的問題。
1.如果定義了數據類型的變量和未定義數據類型的變量參與雙目運算符的后雙目運算,那么返回的結果就是范圍大(精度高)的類型。
2.如果兩個定義了數據類型的變量參與雙目運算符的后雙目運算,那么返回的結果就是范圍大(精度高)的類型。
3.如果直接進行數值的比較,則自動轉型為范圍大(精度高)的類型。
參考原文:https://blog.csdn.net/qq_35868412/article/details/81083672