【问题标题】:Why cant we typecast Float(wrapper) to int(primitive) in java?为什么我们不能在 java 中将 Float(wrapper) 类型转换为 int(primitive)?
【发布时间】:2015-12-11 11:33:55
【问题描述】:

当我从floatint 类型和从Integerint 的类型转换时,它正在工作。但是,当我尝试从Float 类型转换为int 类型时,我收到错误为“不兼容的类型”。为什么我们不能从包装器类型转换为原始类型(除了它自己的原始类型)。

【问题讨论】:

标签: java floating-point type-conversion


【解决方案1】:

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

【讨论】:

  • 是的,没关系.. 请检查下面的代码.... Integer i = 10;浮动 f = (float)i; --->(1) 和 Float f1 = (Float)i; ---->(2).... 这里语句 (1) 有效,但不是 (2)... 为什么...?
【解决方案2】:

这就是包装类和原语之间的区别。它使用有用的方法将值包装在 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 也许这会让事情变得更清楚。

【讨论】:

    猜你喜欢
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多