亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 java Integerwrapper==primitivedouble

為什么 java Integerwrapper==primitivedouble

慕森王 2023-08-16 09:59:30
下面的代碼編譯良好并在 java 中產生 true 。我讀過 java 不會同時進行兩次轉換,就像將int文字值(或變量)分配給Double包裝器引用時一樣。那么為什么與使用 = 運算符相比,它編譯得更好呢?double double1 = 3.00;Integer wInt = new Integer("3");if(wInt == double1);
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

與其他數學運算符(例如 )一樣+,該運算符對其操作數==執行二進制數值提升。

當運算符將二進制數字提升應用于一對操作數時(每個操作數必須表示可轉換為數字類型的值),將按順序應用以下規則:

  1. 如果任何操作數是引用類型,則將對其進行拆箱轉換(第 5.1.8 節)。

  2. 加寬基元轉換(第 5.1.2 節)應用于轉換一個或兩個操作數...

編譯器首先將 拆箱Integer為 an?int,然后將 擴展int為 a?double。如果首先進行拆箱,它將同時執行這兩項操作。

Java 將為許多運算符隱式執行這兩種轉換:

對某些運算符的操作數執行二進制數字提升:

  • 乘法運算符*、/%(§15.17)

  • 數字類型的加法和減法運算符 and?+(?-§15.18.2)

  • 數值比較運算符<、<=、>>=(§15.20.1)

  • 數值相等運算符==!=(§15.21.1)

  • 整數按位運算符&、^|(§15.22.1)

  • 在某些情況下,條件運算符? :(§15.25)


查看完整回答
反對 回復 2023-08-16
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號