Atribuição e conversão

2 respostas
A

Olá pessoal.

Estou estudando o livra da certificação da Kathy Sierra e cheguei a parte de atribuições:

byte a = 12;
byte b = 12;
byte c = 10 + 10;
		
byte a2 = 12;
byte b2 = 12;
byte c2 = a2 + b2;

na linha byte c2 = a2 + b2; o código não compila, da o erro “Type mismatch: cannot convert from int to byte”, a pergunta é porque na terceira linha byte c = 10 + 10;” ele também não da erro, a soma de dois ints não da int também?

Grato a todos.

2 Respostas

ViniGodoy

O que acontece é que na segunda soma, você tem duas variáveis bytes, que poderiam conter um valor maior do que o que cabe num byte.

Por exemplo:

byte a2 = 200; byte b2 = 100; byte c2 = a2 + b2;

Portanto, sempre que o java encontra essa situação, o resultado é convertido para int.

Se você sabe que a operação é segura, recorra a um cast:

byte c2 = (byte)(a2 + b2);

O mesmo vale para a subtração.

No caso da variável c, você tem dois valores constantes. Assim, o java pode determinar em tempo de compilação que a atribuição é segura.

muldon

exatamente isso ViniGodoy !

Criado 25 de abril de 2007
Ultima resposta 25 de abr. de 2007
Respostas 2
Participantes 3