2012-11-28 36 views
5

考慮以下代碼:爲什麼此作業不需要顯式演員?

byte b=1; 
long l=1000; 
b += l; 

我希望最後的語句需要顯式造型,因爲, b+=l作爲b = b+l(b+l)部分給出了一個整數評估。 整數不能分配給沒有明確轉換的字節?

+0

[Java + = operator](http://stackoverflow.com/questions/8710619/java-operator) – assylias

回答

17

好下手,b+l給人以long,不是int ......

...但複合賦值運算符有其他行爲。按照JLS section 15.26.2

形式E1 OP的化合物賦值表達式= E2相當於E1 =(T)((E1)OP(E2)),其中T是E1的類型,不同的是E1只評估一次。

注意劇組爲T

+2

的可能重複您可以觀察手動寫入b = b + l時的差異;那麼你會看到你想要的錯誤:-) –

+0

對不起,b + l給了很長時間。我需要更多地閱讀oracle文檔。謝謝。 – PrashanD

相關問題