为什么我们不能在java中将Float(包装器)类型化为int(primitive)?

时间:2015-12-11 11:33:55

标签: java floating-point type-conversion

当我从floatint类型进行类型转换,并从Integerint进行类型转换时,它正在运行。但是当我尝试从Floatint类型进行类型转换时,我将错误视为“不兼容类型”。为什么我们不能从包装器类型转换为原始类型(除了它自己的原始类型)。

2 个答案:

答案 0 :(得分:0)

因为,Float是一种类型。它来自Object。但int是一种原始类型。您可以使用floatValue()进行转换。

答案 1 :(得分:0)

那就是包装类和基元之间的区别。它使用有用的方法包装Class周围的值。 这就是为什么要转换为int,你必须使用

Float f;
int i = (int)(f.floatValue());

或当然

Float f;
int i = f.intValue();

从某种意义上说,包装器是一个包围某个值的类,从该类中提取一个值而不是将一个类转换为一个值更合乎逻辑。

请注意java.lang.Float的源代码: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Float.java#Float.intValue%28%29 也许这会使事情更加清晰。