Nesse caso o compilador aceita por não saber o valor do booleano, pois ele pode sofrer alteração, seria isto?
Nesse caso o compilador aceita por não saber o valor do booleano, pois ele pode sofrer alteração, seria isto?
Oi Thiago, acho que não entendi sua dúvida.. Ele compila pq todo o código é válido... atribui um valor boolean a variável booleana, lança runtimeexception e não faz try catch etc...
acho que não fui bem claro na pergunta, a dúvida é:
no exercício 9 ele não compila devido
System.out.println("f");
nunca ser executado, porque isso não ocorre aqui no exercicio 11 sendo que sempre será lançada a exception pois o if sempre será true;
Aí é que entra o detalhe.. vc sabe que sempre será lançada a exception,mas o compilador só ler o if.. if é condicional, então talvez o bloco dele não seja executado.
Então, essa é a confusão que faço, sempre acho que nesse caso devido a variável local ter sido inicializada com true, eu sempre tenho a impressão que o compilador vai validar isso, e foi o que eu quis dizer na primeira pergunta, como a variável local não é final o compilador subentendi que ela pode sofrer alteração antes de fazer a verificação do if, por isso o compilador não da erro na compilação correto?
O interessante nesse caso, é que, mesmo se fosse final, vc receberia um warning, mas compila :(.
Alberto, vlw de mais pela atenção, dúvidas solucionadas, show de bola.