¿Por qué los operadores de asignación compuesta de Java + =, - =, * =, / = requieren conversión?

Hasta hoy, pensé que, por ejemplo:

i += j;

Era solo un atajo para:

i = i + j;

Pero si intentamos esto:

int i = 5;
long j = 8;

Luegoi = i + j; no compilará peroi += j; compilará bien.

¿Significa que de hechoi += j; es un atajo para algo como estoi = (type of i) (i + j)?

Respuestas a la pregunta(22)

Su respuesta a la pregunta