我們知道:
int i = 5;
long j = 7;
i = i + j不能編譯,但i += j卻能編譯運行,結果i = 12。
這是因為:
i += j 等同於 i = (int)(i+j);
總結就是:對復合賦值表達式來說,E1 op= E2 (諸如 i += j; i -= j 等等),其實是等同於 E1 = (T)((E1) op (E2)),其中,T是E1這個元素的類型。
這個問題,其實官方文檔中已經解答了。 官方文檔地址 §15.26.2 Compound Assignment Operators