[英]Why java floating point literal can not promote to double while I do the same with wrapper class?
float num1 = 1.0;
This code does not compile because floating-point numbers are default double and it can not be assigned to smaller types unless explicitly casting.此代码无法编译,因为浮点数是默认的双精度数,并且除非显式强制转换,否则不能将其分配给较小的类型。
Float num2 = new Float(2.0);
But this code is compiled perfectly even 2.0 is a double literal.但是即使 2.0 是双文字,这段代码也能完美编译。 Can anyone explain to me what is happening for the second sample?
谁能向我解释第二个样本发生了什么?
If you look at the Class Float
, you immediately get the answer:如果您查看 Class
Float
,您会立即得到答案:
public Float(double value) {
this.value = (float)value;
}
btw you do need to do Float num2 = new Float(2.0);
顺便说一句,您确实需要执行
Float num2 = new Float(2.0);
, Float num2 = 2.0f;
,
Float num2 = 2.0f;
is enough.足够的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.