Oi, Alvaro. Tudo bem com você?
Seu exercício mostra corretamente a ideia de conversão de um valor double para int usando o casting em Java. A expressão (int) valorDouble faz a conversão de 19.5 para um número inteiro, descartando a parte decimal. Então, nesse caso, o resultado armazenado em valorPorInteiro será 19. A declaração também funciona porque o resultado da conversão já é compatível com o tipo int.
Tem apenas um detalhe que vale observar na expressão int valorPorInteiro = (int) valorDouble * 1;. O * 1 não é necessário para realizar a conversão, porque o casting já está sendo feito por (int) valorDouble. Ou seja, (int) valorDouble já produziria 19. Manter o * 1 não impede o funcionamento do código, mas acaba sendo uma operação sem efeito nesse contexto. Vale também experimentar outros valores para perceber o comportamento da conversão, como 19.9, 19.1 e até valores negativos como -19.8. O casting para int não arredonda o número para o inteiro mais próximo, ele simplesmente elimina a parte decimal.
Parabéns pelo exercício, Alvaro. Você aplicou corretamente o casting e conseguiu demonstrar na prática a conversão entre tipos numéricos em Java. Obrigado por compartilhar sua atividade e continue experimentando diferentes valores para observar como o comportamento muda. O fórum está à disposição.
Para saber mais:
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!