final int i;
i = 127;
byte b = (byte)i;
System.out.println(b);
luiz_renato
Rapaz,
Nesse caso se vc fizer assim compila:
final int i = 127;
byte b = i;
System.out.println( b);
Porque ainda não sei …
Uma boa questão.
Gustavo_Santos
Tenta assim Evertom:
finalinti=127;byteb=i;System.out.println(b);
Pelo fato de o compilador saber que i é final e tem um valor
que cabe no byte ele abre uma exceção.
A dúvida é, se eu declaro e inicializo ele libera.
se eu declaro, e depois inicializo, em uma outra linha ele da pau ? pq ?
FabioQuintana
Quando tu define “final” e seta um valor, entao este se torna constante, não pode mais ser alterado ao longo da execução…
sendo assim, “127” ocupa menos de 8bits, levando em conta q um byte tem 8bits, 127 cabe dentro de um byte…
agora, quando vc define um int (que em java tem 32bits), mesmo sendo final, e tenta setar ele ao longo do codigo e logo atribuir esse valor
para uma variavel do tipo byte, o compilador não pode garantir que o valor da variavel do tipo int será menor que 255 (menor que 8bits), pois ele
pode ser setado condicionalmente, assim nao há como garantir que ela vai “caber” em um byte, portanto gera uma inconsistência… e dai o erro.