There are two main kinds of primitive conversion:
I'm reading about widening conversion in Java SE Specification and here I'm seeing the following picture:
int big = 1234567890;
float approx = big; // good, it's widening conversion (int -> float)
System.out.println(big - (int)approx); // what? (float -> int)
In last line of code, I think it's narrowing conversion, am I right? If I'm wrong, explain me please! Thanks in advance.
Yes, the last line uses a narrowing conversion, which is why a cast is necessary. The example is used to demonstrate that the widening conversion on the middle line loses information, that's all:
This program prints
-46
thus indicating that information was lost during the conversion from type int to type float because values of type float are not precise to nine significant digits.
See more on this question at Stackoverflow