Java Operators – Difference Between variable += value and variable = variable + value

javaoperators

For example:

int a = 10;
a += 1.5;

This runs perfectly, but

a = a+1.5;

this assignment says Type mismatch: cannot convert from double to int.
So my question is: what is the difference between += operator and = operator. Why the first assignment didn't says nothing, but second will. Please explain to me. Just I want to know whether I can use the first assignment to all place or not.

Best Answer

From the Java Language Specification section 15.26.2:

A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.

So the most important difference (in terms of why the second version doesn't compile) is the implicit cast back to the type of the original variable.