![](/img/trans.png)
[英]How check if a node exist in linked list or not in java using conditional operator. Print no node is present if it is empty
[英]Strange java behaviour with conditional operator. Is it a bug?
你可以在下面運行並解釋一下嗎?
Object o = true ? new Integer(1) : new Double(2.0);
System.out.println(o);
我發現這令人驚訝,因為有人會期望1打印而不是1.0
這根本不是一個驚喜,雖然看起來像是一個。 行為在JLS§15.25中指定- 條件運算符 :
否則,如果第二個和第三個操作數具有可轉換的類型(第5.1.8節)到數字類型,則有幾種情況:
如果其中一個操作數的類型為
byte
或Byte
,另一個操作數的類型為short
或Short
,則條件表達式的類型為short
。[...]
否則,二進制數字提升(第5.6.2節)將應用於操作數類型, 條件表達式的類型是第二個和第三個操作數的提升類型。
請注意,二進制數字提升執行值集轉換(第5.1.13節),並可執行拆箱轉換 (第5.1.8節)。
因此, Integer
和Double
類型被拆箱到它們各自的原始對應物 - int
和double
,作為二進制數字提升的過程。 然后條件運算符的類型是int
和double
的提升類型,它是double
。 因此結果是1.0
。 當然最終的結果會被裝回Double
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.