I learnt that i+=2
is the short-hand of i=i+2
. But now am doubting it.
For the following code, the above knowledge holds no good:
byte b=0;
b=b+2; //Error:Required byte, Found int
The above code is justifiable, as 2
is int
type and the expression returns int
value.
But, the following code runs fine:
byte b=0; b+=2; //b stores 2 after += operation
This is forcing me to doubt that the +=
short-hand operator is somewhat more than I know.
Please enlighten me.
Best Answer
When in doubt, you can always check the Java Language Specification. In this case, the relevant section is 15.26.2, Compound Assignment Operators.
So you were almost correct, except that a cast is added as well. In your case:
b+=2;
qualifies tob=(byte)(b+2);