Java Storing a Larger Number
in a Smaller Number
ProblemYou have a number of a larger type and you want to store it in a variable of a smaller
type.
Solution
Cast the number to the smaller type. (A cast is a type listed in parentheses before a
value that causes the value to be treated as though it were of the listed type.)
For example, to cast a long to an int , you need a cast. To cast a double to a float ,
you also need a cast.
Explained
This causes newcomers some grief, as the default type for a number with a decimal
point is double , not float . So code like:
float f = 3.0;
won’t even compile! It’s as if you had written:
double tmp = 3.0; float f = tmp;
You can fix it by making f a double , by making the 3.0 a float , by putting in a cast,
or by assigning an integer value of 3:
double f = 3.0; float f = 3.0f; float f = 3f; float f = (float)3.0; float f = 3;
The same applies when storing an int into a short , char , or byte :
// CastNeeded.java public static void main(String argv[]) { int i; double j = 2.75; i = j; // EXPECT COMPILE ERROR i = (int)j; // with cast; i gets 2 System.out.println("i =" + i); byte b; b = i; // EXPECT COMPILE ERROR b = (byte)i; // with cast, i gets 2 System.out.println("b =" + b); }
The lines marked EXPECT COMPILE ERROR do not compile unless either com-
mented out or changed to be correct. The lines marked “with cast” show the correct
forms.
No comments:
Post a Comment