三元運算符java
『壹』 java三元表達式怎麼算
舉個簡單例子吧。
int a=1;int b=2;int c= a>b?1:0,結果c 為0。a>b 為條件,後面當條件為true時返回":"前面的結果,反之返回":"後面的結果。
『貳』 java三元運算符
我錯了,剛才試了一下,下面是我的結論:
在程序執行的時候會自動匹配數據類型調用對應的方法,但這兩次調用的不是同一個方法。依據如下:
使用int i = 90;s.append(6>5?i:'B');的話調用的就是append(int),而使用s.append(6>5?90:'B');的話調用的就是append(char)。
區別在於編譯的時候,使用變數i作為傳遞的參數時,三元運算符會保留期變數名作為參數,而在取i的值時會根據i的類型匹配方法;
而使用90最為傳遞參數時,編譯器在選擇數據類型時會參考「:」兩側的數據類型,如果匹配或足以存儲該數據則存儲為同一數據類型,如果不匹配則替換成其他數據類型。
'B'在編譯時被存儲為char型,而90因為沒有指定數據類型且可以被char這個數據類型所表示,所以被保存為char型。即使使用強制類型轉換也會被忽略,因為常量的數據類型轉換會在編譯器編譯之前一步進行,就像gcc處理宏一樣,所以不會起到強制類型轉換的作用。
『叄』 java什麼叫「三目條件運算符」
三目運算符,又稱條件運算符,是計算機語言(c,c++,java等)的重要組成部分。它是唯一有3個操作數的運算符,所以有時又稱為三元運算符。一般來說,三目運算符的結合性是右結合的。
定義:
對於條件表達式b ? x : y,先計算條件b,然後進行判斷。如果b的值為true,計算x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。一個條件表達式絕不會既計算x,又計算y。條件運算符是右結合的,也就是說,從右向左分組計算。例如,a ? b : c ? d : e將按a ? b : (c ? d : e)執行。加括弧()是為了方便閱讀,不加也是一樣的。
可以理解為"(a<b)?a:b"是一個"條件表達式",它是這樣執行的:如果a<b為真,則表達式取a值,否則取b值.條件運算符由兩個符號組成"?「和」:", 要求有3個操作對象,所以也叫它三目運算符,
(1)它的一般形式為:<表達式1> ? <表達式2> : <表達式3>; "?"運算符的含義是:先求表達式1的值,如果為真,則執行表達式2,並返回表達式2的結果;如果表達式1的值為假,則執行表達式3,並返回表達式3的結果。
(2)通常情況下,表達式1是關系表達式或邏輯表達式,用於描述條件表達式中的條件,表達式2和表達式3可以是常量,變數或表達式.
(3)在程序中,通過把條件表達式的值直接賦予某個變數.
A=(b>c)?d:e1
(4)條件表達式的優先順序別僅高於賦值運算符,而低於前面遇到過的所有運算符.
因此,min=(a<b)?a:b括弧可以不要,可直接寫成,min=a<b?a:b如果有x<y?x+1:y-1等效於x<y(x+1):(y-1)而不等效於(x<y?x+1:y)-1
(5) 條件運算符的結合方向為"自右至左".
(6) 條件表達式允許嵌套,即允許條件表達式中的表達式2和表達式3又是一個條件表達式.例如:下面的例子
EL表達式中使用三目運算符:
單個判斷:
${postNum == null ? 0 : postNum}
Servlet:
PwPersonalDetails personalDetails=pwPersonalDetailsService.
findById(borrowerId);//查詢個人信息
request.setAttribute("personalDetails", personalDetails);//傳參
jsp:
<div>
<p>有無購車:</p>
<p id="PurchaseCar">
${personalDetails.purchaseCar eq true ? "有購車":"無購車"}
</p>
</div>1234567891011121314
EL表達式結合三目運算符多個判斷條件寫法:
比如:我後台查詢出來的borrowMoney(表單)數據有bidTypeId(標種類型)分別為1-7七種:我要傳遞到前端html給一個p標簽根據bidTypeId不同給予不同的名稱:
現在直接將多個三目運算符拼成多個條件的寫法:
${borrowMoney.bidTypeId eq 1 ? '信用額度:':(borrowMoney.bidTypeId eq 2 ? '抵押額度:':(borrowMoney.bidTypeId eq 5 ?'擔保額度:':(borrowMoney.bidTypeId eq 7 ? '流轉額度:':'信用額度:')))}
希望對您有所幫助!~
『肆』 Java三元運算符
運算符的通用格式如下:
expression1?expression2:expression3
其中,expression1是一個布爾表達式。如果expression1為真,那麼expression2被求值;否則,expression3被求值。整個表達式的值就是被求值表達式(expression2或expression3)的值。expression2和expression3是除了void以外的任何類型的表達式,且它們的類型必須相同。
下面是一個利用運算符的例子:
ratio=denom==0?0:num/denom;
當Java計算這個表達式時,它首先看問號左邊的表達式。如果denom等於0,那麼在問號和冒號之間的表達式被求值,並且該值被作為整個表達式的值。如果denom不等於零,那麼在冒號之後的表達式被求值,並且該值被作為整個表達式的值。然後將整個表達式的值賦給變數ratio。
『伍』 java 三元運算符
我們三元運算符 判斷前條件是否符合取後兩種值,一定是為了賦值
i==0? s.append("?"):s.append(",?"); 這句相當於單獨在代碼里寫一行
"?" ; 或者
",?";
肯定報錯啊
方法返回字元串 return "?";這一定不報錯,
所以必須是賦值 i="?";
或者i=",?";
『陸』 Java 三元運算符
Java提供一個特別的三元運算符(ternary)經常用於取代某個類型的if-then-else語句。這個運算符就是?,並且它在Java中的用法和在C/C++中的幾乎一樣。該符號初看起來有些迷惑,但是一旦掌握了它,用?運算符是很方便高效的。
運算符的通用格式如下:
expression1:expression2:expression3
其中,expression1是一個布爾表達式。如果expression1為真,那麼expression2被求值;否則,expression3被求值。整個表達式的值就是被求值表達式(expression2或expression3)的值。expression2和expression3是除了void以外的任何類型的表達式,且它們的類型必須相同。下面是一個利用運算符的例子:
ratio=denom==0?0:num/denom;
當Java計算這個表達式時,它首先看問號左邊的表達式。如果denom等於0,那麼在問號和冒號之間的表達式被求值,並且該值被作為整個表達式的值。如果denom不等於零,那麼在冒號之後的表達式被求值,並且該值被作為整個表達式的值。然後將整個表達式的值賦給變數ratio。
條件a:b;
等同於
if(條件)
{
a;
}else
{
b;
}
『柒』 在JAVA中怎樣區分一元運算符,二元運算符,三元運算符
運算符是一元、二元還是三元,要看它要求有幾個數參加運算,比如"++"運算符,只需要一個數據單元參加運算,如++a,它就是一元運算符;而"+"、"-"等運算符,如a+b,要求有兩個數據單元參加運算,它就是二元運算符;"?:"運算符要求三個運算單元,如(ab)?c:d,它就是三元運算符。
『捌』 java 三元運算符: 為什麼從右向左運算
int a = 1 ? 2 : 3 ? 4 : 5;
如果從左到右結合,即a = (1 ? 2 : 3) ? 4 : 5 = 2 ? 4 : 5 = 4;
如果從右到左結合,即a = 1 ? 2 : (3 ? 4 : 5) = 1 ? 2 : 4 = 2;
實際運行int a = 1 ? 2 : 3 ? 4 : 5;得到a=2;即條件運算符是從右到左結合的。
從這個結果可以理解出是從右到左結合的,至於為什麼要從右到左,我只能說這是語法規定。
『玖』 在JAVA中怎樣區分一元運算符,二元運算符,三元運算符
運算符是一元、二元還是三元,要看它要求有幾個數參加運算,比如"++"運算符,只需要一個數據單元參加運算,如++a,它就是一元運算符;而"+"、"-"等運算符,如a+b,要求有兩個數據單元參加運算,它就是二元運算符;"?:"運算符要求三個運算單元,如(a>b)?c:d,它就是三元運算符。