有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中为浮点包装器分配整数值的装箱

以下作品

float a=3;

但以下情况并非如此:

Float a=3;

3不应该自动升级为浮点型(因为加宽转换不需要显式转换),然后装箱为浮点型吗

这是因为我在Khalid Mogul的Java书中读到了一条规则吗

Widening conversions can't be followed by any boxing conversions


共 (3) 个答案

  1. # 1 楼答案

    Float a=3;不起作用的原因是编译器将3包装到它的整数对象中(本质上,编译器是这样做的:Float a = new Integer(3);,这已经是一个编译器错误)。Float对象不是Integer对象(即使它们来自同一个Number对象)

    以下工作:

    Number a = 3;
    

    本质上,编译器将其翻译为:

    Number a = new Integer(3);
    

    或者正如约阿希姆·绍尔所说

    Number a = Integer.valueOf(3);
    

    希望这有帮助

  2. # 2 楼答案

    浮球a=3.0f;会有用的

  3. # 3 楼答案

    Float               Integer
      ^                    ^
      |                    |
      |                    |
      v                    v
    float <     ->   int
    

    原语和包装器之间进行装箱/拆箱转换,并且从一个数字原语升级到另一个数字原语。但是Java不能进行两次这种转换(在您的例子中,从int转换为Float)