I had the following lines of code
long longnum = 555L;
int intnum = 5;
intnum+=longnum;
intnum= intnum+longnum; //Type mismatch: cannot convert from long to
That's because the compound assignment operator does implicit casting.
From JLS Compound Assignment Operator:
A compound assignment expression of the form
E1 op= E2
is equivalent toE1 = (T) ((E1) op (E2))
, whereT
is the type ofE1
, except thatE1
is evaluated only once.
While in case of binary +
operator, you have to do casting explicitly. Make your 4th assignment:
intnum = (int)(intnum+longnum);
and it would work. This is what your compound assignment expression is evaluated to.