⑴ java三目運算符問題
1、三目運復算符 (表達制式1)?(表達式2):(表達式3),計算方法是這樣的:表達式1是一個邏輯表達式,如果其值為true,則整個表達式的值為表達式2的值,否則為表達式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);結果為i = 8.因為5 > 3為true,所以i = 5 + 3.
3、根據三目運算符的從右到左的結合性,我是這樣劃分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以應該從最右邊的那個表達式開始計算,結果應該是1、0、-1中的一個值。
以上純屬個人理解。沒搞清楚你這個演算法到底是什麼意義。。。。還有你的compare()方法不能聲明為靜態。
⑵ java三目運算符
三目運算符a
>
b
?
a
:
b運算規則是:如果?前面的等式為true,即a>b,則執行返回a,否則返回b;
先判斷變數year是否大於對象內a的year值,如容果大於就返回1,小於就繼續判斷year是否小於對象a的year值,如果小於就返回-1;此後就是year==a.year的情況,依次判斷月份和日
⑶ java中三目運算符
先學java的叫它,三元運算符;先學c的叫它三目運算符
即( ?: )
如名字表示的三元運版算符需要三個操作數。權
語法為:條件表達式?表達式1:表達式2。
說明:問號前面的位置是判斷的條件,判斷結果為bool型,為true時調用表達式1,為false時調用表達式2。
其邏輯為:「如果為真執行第一個,否則執行第二個。」
⑷ 三目運算符 java
這是編譯器的自動裝箱/拆箱轉換引起的問題,
自動裝箱/拆箱的特性,只要一個運算回中有不同的答類型,涉及到類型轉換,那麼編譯器會往下(基本類型)轉型,再進行運算。 就是說,如果運算中有int和Integer,Integer會先轉成int再計算。
所以你的代碼中,最後一行
i = StringUtils.isEmpty(ComNo)?RecordType:0;
實際的運行會是這樣 i = StringUtils.isEmpty(ComNo)?RecordType.intValue():0;
RecordType為null,所以會報錯。
可以改成:i = StringUtils.isEmpty(ComNo) ? RecordType : Integer.valueOf(0);
保持類型的一致就不會自動轉型了
⑸ Java三目運算符
額、有這么麻煩么?
直接抄
switch(Integer.valueOf(ptype12==null?"-1":ptype12)){
case -1;return ptype;break;
.. .. . .. . .
}
如果非要用三目運算符
得這么寫
return "9".equals(ptype12)?ptype12:(其它表達式);
三目運算符是這個樣子滴
布爾值?F1:F2
如果布爾值為真,執行F1,否則F2
還涉及到運算符優先順序的問題
如果後面太長最好括起來
另外三目運算符不能單獨使用,不能完全代替if else
可能會這么出現
value = boolean?v1:v2;
StringBuffer.append(boolean?v1:v2);
return boolean?v1:v2;
反正就是不能直接拿出來用了
以上回答你滿意么?