What do you suspect will happen with the following method call?
pointB.move( 14.305, 34.9 );
This is an error, because
the parameter list has two floating point values,
not the two int
values required.
When a method starts running, it must have the right number of parameters, and each parameter must be of the required type. However, sometimes, just before a method starts running, the values supplied in a parameter list are converted to the required type. There are two ways in which this can happen:
A type cast looks like this:
(requiredType)(expression)
The (requiredType)
is something like (int)
.
The (expression)
is an ordinary expression.
If it is a single variable, you don't need the surrounding parentheses.
Here is an example program that shows a type cast:
import java.awt.*; // import the class library where Point is defined class typeCastEg { public static void main ( String arg[] ) { Point pointB = new Point(); // create a point at x=0 y=0 pointB.move( (int)14.305, (int)(34.9-12.6) ); System.out.println("New location:" + pointB ); } }
In this case, a type cast is required for both parameters because
converting a floating point number to an int
will usually
lose information.
In casting a floating point value to an int
,
the fractional part will be lost.
(Not rounded.)
What will be the output of the program?