tipos - tipo de datos utilizados en java
¿Por qué la suma de los bytes es entera? (1)
Porque la Especificación de Lenguaje Java lo dice
La promoción numérica binaria se realiza en los operandos (§5.6.2).
Tenga en cuenta que la promoción numérica binaria realiza una conversión de conjunto de valores (§5.1.13) y puede llevar a cabo la conversión de unboxing (§5.1.8).
El tipo de expresión aditiva en operandos numéricos es el tipo promovido de sus operandos.
y, con respecto a la promoción numérica ,
La conversión primitiva de ensanche (§5.1.2) se aplica para convertir uno o ambos operandos tal como se especifica en las siguientes reglas:
- [...]
- De lo contrario, ambos operandos se convierten a tipo
int
.
Por lo tanto, los valores de byte
se promueven a valores int
y se suman. El resultado de la expresión es el tipo promocionado, por lo tanto, un int
.
Simplemente puedes lanzar el resultado
byte z = (byte) (b + a);
pero cuidado con overflow / underflow.
Esta pregunta ya tiene una respuesta aquí:
Tengo variable byte tyo
byte a = 3;
byte b = 4;
Si los suma, el valor de suma es entero.
byte z = a+b //error, left side is byte, right side is integer
¿Por qué a + b es int?