问题描述
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;
就足够了。