为什么java浮点文字不能提升为double而我对包装类做同样的事情?

问题描述

float num1 = 1.0;

代码无法编译,因为浮点数认为双精度数,除非显式转换,否则无法将其分配给较小的类型。

Float num2 = new Float(2.0);

但是即使 2.0 是双字面值,这段代码也能完美编译。谁能向我解释第二个样本发生了什么?

解决方法

如果您查看 Float 类,您会立即得到答案:

public Float(double value) {
    this.value = (float)value;
}

顺便说一句,您确实需要执行 Float num2 = new Float(2.0);Float num2 = 2.0f; 就足够了。