文章詳情頁
使用條件運算符的奇怪Java行為。是蟲子嗎?
瀏覽:133日期:2024-05-02 09:49:18
如何解決使用條件運算符的奇怪Java行為。是蟲子嗎??
盡管看起來好像一個,但這一點也不令人驚訝。該行為在JLS§15.25-條件運算符中指定:
否則,如果第二個和第三個操作數(shù)的類型可以轉(zhuǎn)換(第5.1.8節(jié))為數(shù)字類型,則有幾種情況:
如果其中一個操作數(shù)的類型為byte或Byte,而另一個操作符的類型為short或Short,則條件表達式的類型為short。[…]
否則,將二進制數(shù)值提升(第5.6.2節(jié))應用于操作數(shù)類型,請注意,二進制數(shù)值升級執(zhí)行值集轉(zhuǎn)換(第5.1.13節(jié)),并且可能 (第5.1.8節(jié))。
因此,Integer和Double類型作為二進制數(shù)值提升的過程被取消裝箱到它們各自的原始副本-int和double。然后,條件運算符的類型是intand的提升類型double,即double。因此結果是1.0。然后,當然會將最終結果裝箱到Double。
解決方法您能否運行以下內(nèi)容并進行解釋?
Object o = true ? new Integer(1) : new Double(2.0);System.out.println(o);
我發(fā)現(xiàn)令人驚訝,因為有人期望打印1而不是1.0
標簽:
java
相關文章:
1. javascript - 關于ios微信端瀏覽器網(wǎng)頁的一些問題2. phpadmin的數(shù)據(jù)庫,可以設置自動變化時間的變量嗎?就是不需要接收時間數(shù)據(jù),自動變化3. sqlserver - mysql如何查詢多列重復的數(shù)據(jù)個數(shù)?4. elasticsearch - Elastisearch怎么求查詢結果的交集,如MYSQL的interset5. 想學下微信支付視頻教程,能否付費獲得?6. MySQL 水平拆分之后,自動增長的ID有什么好的解決辦法?7. PHP中的$this代表當前的類還是方法?8. mysql - SQL操作時間的函數(shù)?9. linux - 編譯安裝mysql 5.6.2310. Mysql啟動發(fā)生系統(tǒng)錯誤1067
排行榜

熱門標簽