Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Operadores em Java.

Srs, boa tarde!

Eu estou com uma dúvida relacionada aos tipos primitivos Byte e Short.

Sabemos que na hierarquia dos operadores um short "comporta" um valor de Byte, como nesse exemplo:

class Teste {
    static public void main(String... j) {
        byte vByte = 1;
        short vShort = vByte;
        }
}

Minha dúvida é por que no exemplo abaixo, short não aceita o tipo de atribuição sendo que o limite de valor de short é respeitado.

class Teste {
    static public void main(String... j) {
        byte vByte = 1;
        short vShort2 = vByte + 1;
    }
}

Agradeço antecipadamente.

3 respostas
solução!

Oi Leandrohendrix, tudo bem?

Como mostrado aqui, as operações aritméticas devolvem o tipo mais abragente, ou, no mínimo um int.

Ou seja, se você fizer:

int a = 2 + 3.0;  // erro compilação, devolve double
double d = 2 + 3.0; // ok

como ele devolve no mínimo int, quando você faz operações envolvendo byte, short, char, ele sempre retorna int.

No seu exemplo, mesmo que apesar de que sabemos que o resultado (2) cabe em um short, o resultado de um short + inteiro retorna um inteiro, e ao tentar atribuir pra um short, não compila.

Mais exemplos:

byte vByte = 1;
byte b2 = 1;
short vShort2 = vByte + b2; // erro compilação, devolve int
int i = vByte + b2; // ok

Faz sentido?

Oi Lucas!

Em primeiro lugar eu gostaria de agradecer sua atenção.

Sim. Sua resposta foi muito didática. Você explicou bem quando disse que "como ele devolve no mínimo int, quando você faz operações envolvendo byte, short, char, ele sempre retorna int.".

Gostaria de agradecer pelo breve retorno. Tenha uma ótima semana.

Oi Leandrohendrix, por nada. Ótima semana para você também!