简体   繁体   English

为什么 java 浮点文字不能提升为双倍,而我对包装器 class 做同样的事情?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM