Why is the sum of bytes integer?

11,234

Because the Java Language Specification says so

Binary numeric promotion is performed on the operands (§5.6.2).

Note that binary numeric promotion performs value set conversion (§5.1.13) and may perform unboxing conversion (§5.1.8).

The type of an additive expression on numeric operands is the promoted type of its operands.

and, regarding numeric promotion,

Widening primitive conversion (§5.1.2) is applied to convert either or both operands as specified by the following rules:

  • [...]
  • Otherwise, both operands are converted to type int.

So the byte values are promoted to int values and added up. The result of the expression is the promoted type, therefore an int.

You can simply cast the result

byte z = (byte) (b + a);

but careful with overflow/underflow.

Share:
11,234
user2693979
Author by

user2693979

Updated on June 23, 2022

Comments

  • user2693979
    user2693979 almost 2 years

    I have tyo byte variable

    byte a = 3;
    byte b = 4;
    

    If I sum them, the value of sum is integer.

    byte z = a+b  //error, left side is byte, right side is integer
    

    Why a+b is int?