Java += 操作符實質

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章