Byte incrementing operation in Java
java
Solution
The difference is that there is an `implicit casting` in the `++` operator from `int` to `byte`, whereas, you would have to do that `explicitly` in case if you use `b = b + 1`
b = b + 1; // Will not compile. Cannot cast from int to byte
You need an explicit cast:
b = (byte) (b + 1);
Whereas `b++` will work fine. The `++` operator automatically casts the value `b + 1`, which is an `int` to a `byte`.
This is clearly listed in JLS - §15.26.2 Compound Assignment Operators : -
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
Please note that operation `b + 1` will give you a result of type `int`. So, that's why you need an explicit cast in your second assignment.
Problem
What happens when we try to increment a byte variable using the increment operator and also by the addition operator. ``` public class A { public static void main(final String args[]) { byte b = 1; b++; b = b + 1; } } ``` Please give me the source where we can find such small things unleashed? Please help me out.