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.

Original source

Related problems