文章詳情頁
使用條件運(yùn)算符的奇怪Java行為。是蟲子嗎?
瀏覽:114日期:2024-05-02 09:49:18
如何解決使用條件運(yùn)算符的奇怪Java行為。是蟲子嗎??
盡管看起來好像一個(gè),但這一點(diǎn)也不令人驚訝。該行為在JLS§15.25-條件運(yùn)算符中指定:
否則,如果第二個(gè)和第三個(gè)操作數(shù)的類型可以轉(zhuǎn)換(第5.1.8節(jié))為數(shù)字類型,則有幾種情況:
如果其中一個(gè)操作數(shù)的類型為byte或Byte,而另一個(gè)操作符的類型為short或Short,則條件表達(dá)式的類型為short。[…]
否則,將二進(jìn)制數(shù)值提升(第5.6.2節(jié))應(yīng)用于操作數(shù)類型,請(qǐng)注意,二進(jìn)制數(shù)值升級(jí)執(zhí)行值集轉(zhuǎn)換(第5.1.13節(jié)),并且可能 (第5.1.8節(jié))。
因此,Integer和Double類型作為二進(jìn)制數(shù)值提升的過程被取消裝箱到它們各自的原始副本-int和double。然后,條件運(yùn)算符的類型是intand的提升類型double,即double。因此結(jié)果是1.0。然后,當(dāng)然會(huì)將最終結(jié)果裝箱到Double。
解決方法您能否運(yùn)行以下內(nèi)容并進(jìn)行解釋?
Object o = true ? new Integer(1) : new Double(2.0);System.out.println(o);
我發(fā)現(xiàn)令人驚訝,因?yàn)橛腥似谕蛴?而不是1.0
標(biāo)簽:
java
上一條:在啟動(dòng)后的90秒內(nèi),Heroku- Web進(jìn)程未能綁定到$ PORT。TooTallNate Websockets下一條:使用Enums的策略模式。需要一個(gè)簡(jiǎn)單的Java示例
相關(guān)文章:
1. matplotlib - python函數(shù)的問題2. javascript - history.replaceState()無法改變query參數(shù)3. java - 是否類 類型指針、引用作為形參 ,函數(shù)結(jié)束不會(huì)自動(dòng)析構(gòu)類?4. angular.js - angular ng-class里面的引號(hào)問題5. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境6. docker start -a dockername 老是卡住,什么情況?7. docker內(nèi)創(chuàng)建jenkins訪問另一個(gè)容器下的服務(wù)器問題8. mysql無法添加外鍵9. javascript - react 中綁定事件和阻止事件冒泡10. javascript - es6將類數(shù)組轉(zhuǎn)化成數(shù)組的問題
排行榜

熱門標(biāo)簽