public class NumberTest { public static void main (String[] args) { int intVal; long longVal; float floatVal; double doubleVal; intVal = 25; longVal = 99999L; doubleVal = 3.78; floatVal = 85.32F; showValues(intVal, longVal, doubleVal, floatVal); SimpleIO.in.demandString("Pausing ..."); longVal = intVal; // assign an int to a long - explicit cast not needed showValues(intVal, longVal, doubleVal, floatVal); SimpleIO.in.demandString("Pausing ..."); longVal = 99999L; intVal = (int) longVal; // assign a long to an int - explicit cast needed showValues(intVal, longVal, doubleVal, floatVal); SimpleIO.in.demandString("Pausing ..."); doubleVal = floatVal; // assign a float to a double - explicit cast not needed showValues(intVal, longVal, doubleVal, floatVal); SimpleIO.in.demandString("Pausing ..."); doubleVal = 3.78; floatVal = (float) doubleVal; // assign a double to a float - explicit cast needed showValues(intVal, longVal, doubleVal, floatVal); SimpleIO.in.demandString("Pausing ..."); floatVal = intVal; // assign any integer type to any floating type // - explicit cast not needed showValues(intVal, longVal, doubleVal, floatVal); SimpleIO.in.demandString("Pausing ..."); intVal = (int) doubleVal; // assign a double to an int - explicit cast needed // effect is to truncate showValues(intVal, longVal, doubleVal, floatVal); SimpleIO.in.demandString("Pausing ..."); SimpleIO.out.println(intVal + doubleVal); // arithmetic operators do a lot of // implicit casting to the highest precision // floating-point types present } public static void showValues(int i, long l, double d, float f) { SimpleIO.out.println( "intVal = " + i + ", longVal = " + l + ", doubleVal = " + d + ", floatVal = " + f); } }