当我从float
到int
类型进行类型转换,并从Integer
到int
进行类型转换时,它正在运行。但是当我尝试从Float
到int
类型进行类型转换时,我将错误视为“不兼容类型”。为什么我们不能从包装器类型转换为原始类型(除了它自己的原始类型)。
答案 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 也许这会使事情更加清晰。