Возможный дубликат:
Java + = оператор
В Java это недопустимо (не компилируется), как и ожидалось:
long lng = 0xffffffffffffL;
int i;
i = 5 + lng; //"error: possible loss of magnitude"
Но это прекрасно (?!)
long lng = 0xffffffffffffL;
int i = 5;
i += lng; //compiles just fine
Это, очевидно, операция сужения, которая может превышать диапазон int
. Так почему компилятор не жалуется?