| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 11:32:36
|
AndrewAguiar
JavaChild
Membro desde: 18/07/2006 10:03:59
Mensagens: 124
Offline
|
Olá pessoal.
Estou estudando o livra da certificação da Kathy Sierra e cheguei a parte de atribuições:
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.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 12:44:51
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
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:
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:
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 13:17:22
|
muldon
JavaTeenager
![[Avatar]](/images/avatar/5f25fbe144e4a81a1b0080b6c1032778.png)
Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline
|
exatamente isso ViniGodoy !
|
Sun Certified Java Programmer 5 |
|
|
 |
|
|