我以前覺得: i += j 等同於 i = i + j; 但假設:java
int i = 5; long j = 8;
這時 i = i + j 不能編譯,但i += j 卻能夠編譯。這說明二者是有差別的。spa
對複合賦值表達式來講,E1 op= E2 (諸如 i += j; i -= j 等等),實際上是等同於 E1 = (T)((E1) op (E2)),其中,T是E1這個元素的類型。code
舉例來講,以下的代碼編譯
short x = 3; x += 4.6;
等同於class
short x = 3; x = (short)(x + 4.6);