If we want to compile and execute the wrong assignment statements in the previous table, we have to insert an explicit type conversion (also called type cast).
Converts the type of an expression to another type in such a way that operations involving incompatible types become possible.
int a = (int) 3.75; // cast to int of the expression 3.75 (of type double) System.out.println(a); // prints 3
When we perform a cast, the result could be affected by a loss of precision: in the previous example, the value 3.75 is truncated to 3.
double d; float f; long l; int i; short s; byte b; // The following assignments are correct d = f; f = l; l = i; i = s; s = b; // The following assignments are NOT correct f = d; l = f; i = l; s = i; b = s; // The following assignments are correct, // but the result could be affected by a loss of precision f = (float)d; l = (long)f; i = (int)l; s = (short)i; b = (byte)s;