達令說
2019-05-30 10:21:42
為什么Java的+=,-=,*=,/=復(fù)合賦值操作符不需要轉(zhuǎn)換?直到今天,我還在想,例如:i += j;只是以下幾個方面的捷徑:i = i + j;但如果我們嘗試這個:int i = 5;long j = 8;然后i = i + j;不會編譯但是i += j;會編譯得很好。這是否意味著i += j;是這樣的捷徑i = (type of i) (i + j)?
4 回答

紫衣仙女
TA貢獻1839條經(jīng)驗 獲得超15個贊
形式的復(fù)合賦值表達式 E1 op= E2
等于 E1 = (T)((E1) op (E2))
,在哪里 T
的類型 E1
,除了 E1
只計算一次。
[.]以下代碼是正確的: short x = 3;x += 4.6;
并導(dǎo)致x的值為7,因為它相當(dāng)于: short x = 3;x = (short)(x + 4.6);

慕哥9229398
TA貢獻1877條經(jīng)驗 獲得超6個贊
byte b = 10;b *= 5.7;System.out.println(b); // prints 57
byte b = 100;b /= 2.5;System.out.println(b); // prints 40
char ch = '0';ch *= 1.1;System.out.println(ch); // prints '4'
char ch = 'A';ch *= 1.5;System.out.println(ch); // prints 'a'

慕哥6287543
TA貢獻1831條經(jīng)驗 獲得超10個贊
例如,以下代碼是正確的: short x = 3;x += 4.6;
并導(dǎo)致x的值為7,因為它相當(dāng)于: short x = 3;x = (short)(x + 4.6);

繁華開滿天機
TA貢獻1816條經(jīng)驗 獲得超4個贊
i += l;
i = (int)(i + l);
.class
添加回答
舉報
0/150
提交
取消