0
我知道,在默認情況下的數字存儲爲整數Java編寫,但Java中的速記運算符如何與普通運算符不同?
byte x = 10;
x = x + 10;
是給錯誤而
byte x = 10;
x += 10;
正在編制精細
我知道,在默認情況下的數字存儲爲整數Java編寫,但Java中的速記運算符如何與普通運算符不同?
byte x = 10;
x = x + 10;
是給錯誤而
byte x = 10;
x += 10;
正在編制精細
JLS有一個答案你
E1形式的複合賦值表達式op = E2相當於E1 =(T)((E1)op(E2)),其中T是E1的類型,只是E1只評估一次。
short x = 3;
x += 4.6;
,並導致X具有值7,因爲它等同於:
short x = 3;
x = (short)(x + 4.6);
所以你的情況你的第二個聲明equlas到
x = (byte) x + 10;
這就是原因所在編譯器很高興。
當你做+ =這是一個複合語句,編譯器內部轉換它。在第一種情況下,由於它是直接聲明,因此編譯器直接向您大喊:) –
thanks @ꜱᴜʀᴇꜱʜᴀᴛᴛᴀ –