考慮以下代碼:爲什麼此作業不需要顯式演員?
byte b=1;
long l=1000;
b += l;
我希望最後的語句需要顯式造型,因爲, b+=l
作爲b = b+l
和 (b+l)
部分給出了一個整數評估。 整數不能分配給沒有明確轉換的字節?
考慮以下代碼:爲什麼此作業不需要顯式演員?
byte b=1;
long l=1000;
b += l;
我希望最後的語句需要顯式造型,因爲, b+=l
作爲b = b+l
和 (b+l)
部分給出了一個整數評估。 整數不能分配給沒有明確轉換的字節?
好下手,b+l
給人以long
,不是int
......
...但複合賦值運算符有其他行爲。按照JLS section 15.26.2:
形式E1 OP的化合物賦值表達式= E2相當於E1 =(T)((E1)OP(E2)),其中T是E1的類型,不同的是E1只評估一次。
注意劇組爲T
。
的可能重複您可以觀察手動寫入b = b + l時的差異;那麼你會看到你想要的錯誤:-) –
對不起,b + l給了很長時間。我需要更多地閱讀oracle文檔。謝謝。 – PrashanD
[Java + = operator](http://stackoverflow.com/questions/8710619/java-operator) – assylias