Opa Gemsanches, tranquilo?
Em Java ainda temos que seguir essa regra de não atribuir valores de um tipo maior para um tipo menor. Faz um tempinho desde que eu programei em C, mas acredito que as regras são parecidas aqui no Java. Então o compilador do Java vai reclamar caso haja a possibilidade do número truncar.
Quando fazemos a conversão de um tipo menor para um tipo maior. como um valor int para um double, por exemplo, o compilador permite sem problemas já que não há um risco de perdermos informações nessa conversão. É o que chamamos de casting implícito ou promoção.
double d = 3.1415;
int i = d; // não compila
int i = 5;
double d2 = i; // compila
Agora, se quisermos fazer o contrário convertendo um double para um int, fazemos o casting explícito, também conhecido como só casting mesmo.
double d3 = 3.14;
int i = (int) d3; // compila mesmo correndo o risco de truncar
Bom, acho que é isso. Se quiser dar uma olhada no trecho da apostila da Caelum de onde eu peguei os exemplos e que fala um pouco mais sobre isso é só acessar esse link.
Espero que isso ajude. Se ficou alguma dúvida é só avisar!
Bons estudos!!