Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 3 da Aula 1 - Trabalhando com saída no console

Nesse exemplo o código compila e roda normalmente. Mas por haver perda de precisão na linha com comentário C, pra mim deveria não compilar. Por qual motivo funcionou então?

public class Test {
    public static void main(String[] args) {
        System.out.printf("%s",12); //A
        System.out.printf("%d",new Integer(321)); //B
        System.out.printf("%d",(short)(byte)(double) 127); //C
    }
}
1 resposta
solução!

O cast acontece em tempo de execução, o compilador não consegue saber se o 127 pode ser feito cast para byte, por exemplo. Apesar de perder precisão como o valor 127 cabe dentro de um byte e de um short não há nem mesmo perca do valor 127, se você trocar para 128 vai ver que é feito o cast mas como 128 não cabe em um byte o valor se perde.