Java += 操作符實質
問題 我之前以爲: i += j 等同於 i = i + j; 但假設有:
int i = 5;
long j = 8;
這時 i = i + j 不能編譯,但 i += j 卻可以編譯。這說明兩者還是有差別的 這是否意味着,i += j,實際是等同於 i= (type of i) (i + j)呢?
###回答 這個問題,其實官方文檔中已經解答了。 請看這裏 §15.26.2 Compound Assignment Operators
再照搬下官方文檔的說明
對複合賦值表達式來說,E1 op= E2 (諸如 i += j; i -= j 等等),其實是等同於 E1 = (T)((E1) op (E2)),其中,T是E1這個元素的類型。
舉例來說,如下的代碼
short x = 3;
x += 4.6;
等同於
short x = 3;
x = (short)(x + 4.6);