Duvida sobre tipo byte

2 respostas
P

Olá pessoal ,

pq tenho que fazer o cast no exemplo abaixo não entendi porque ,

se alguem puder me ajudar agradeceria …

byte b  = 2;
 byte b1 = 3;

 b = (b*b1);         // da erro nessa linha --> type mismatch: cannot convert  from int to byte

System.out.println("b="+b);

2 Respostas

T

b é byte, b1 é byte, mas o resultado da multiplicação é um int.

De modo geral:
O resultado da multiplicação de byte, char, short ou int por outro byte, char, short ou int é um int.
O resultado da multiplicação de um long por um byte, char, short ou int é um long.
O resultado da multiplicação de um double ou float por qualquer outra coisa é um double.

Fox_McCloud

1 bit = dado que ocupa 1 posição de memória (0 ou 1)

1 byte = 8 bits

1 byte * 1 byte = alguma coisa que ocupa entre 1 e 16 bits (entre 1 e 2 bytes), e que portanto não cabe mais em um byte, por isso o Java retorna automaticamente um int.

Quando você faz um casting assim:

byte b = (byte)(b1*b2);

Está jogando fora todos os dados menos significativos além dos oito bits (byte), ou seja, perdendo precisão. Se você quiser precisão total, isso é um erro.

Perda de precisão é admissível, desde que você o faça intencionalmente e sabendo o porquê.

Criado 27 de março de 2006
Ultima resposta 27 de mar. de 2006
Respostas 2
Participantes 3