Оператор += в Java

1,00
р.
До настоящего времени я считал, что запись
i += j
есть то же самое, что и
i = i + j
Однако если взять
int i = 5 long j = 8
То выражение i = i + j не скомпилируется, в то время как i += j будет компилироваться без проблем.
Означает ли, что i += j эквивалентно чему-то вроде i = (type of i) (i + j)?

Ответ
Ответ можно найти в спецификациях Java, §15.26.2 Compound Assignment Operators:
Присваивание вида E1 op= E2 эквивалентно выражению E1 = (T) ((E1) op (E2)), где T — тип E1. Отличие состоит лишь в том, что E1 вычисляется только один раз.
Далее, там есть следующий пример:
Данный код является корректным: short x = 3 x += 4.6
В результате получаем для x значение 7, так как это эквивалентно: short x = 3 x = (short)(x + 4.6)

Другими словами, ваши догадки верны.