文章詳情頁
使用條件運(yùn)算符的奇怪Java行為。是蟲子嗎?
瀏覽:130日期:2024-05-02 09:49:18
如何解決使用條件運(yùn)算符的奇怪Java行為。是蟲子嗎??
盡管看起來好像一個,但這一點(diǎn)也不令人驚訝。該行為在JLS§15.25-條件運(yùn)算符中指定:
否則,如果第二個和第三個操作數(shù)的類型可以轉(zhuǎn)換(第5.1.8節(jié))為數(shù)字類型,則有幾種情況:
如果其中一個操作數(shù)的類型為byte或Byte,而另一個操作符的類型為short或Short,則條件表達(dá)式的類型為short。[…]
否則,將二進(jìn)制數(shù)值提升(第5.6.2節(jié))應(yīng)用于操作數(shù)類型,請注意,二進(jìn)制數(shù)值升級執(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)然會將最終結(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
上一條:在啟動后的90秒內(nèi),Heroku- Web進(jìn)程未能綁定到$ PORT。TooTallNate Websockets下一條:使用Enums的策略模式。需要一個簡單的Java示例
相關(guān)文章:
1. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)2. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫3. mysql取模分表與分表4. gvim - 誰有vim里CSS的Indent文件, 能縮進(jìn)@media里面的5. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標(biāo)點(diǎn)符號?正則如何寫?6. dockerfile - 我用docker build的時候出現(xiàn)下邊問題 麻煩幫我看一下7. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯誤8. PHP類屬性聲明?9. objective-c - ios 怎么實(shí)現(xiàn)微信聯(lián)系列表 最好是swift10. javascript - 請教如何獲取百度貼吧新增的兩個加密參數(shù)
排行榜

熱門標(biāo)簽