在下面的代码中,我从Double
,double
和float
构造一些String
变量。但是,根据文档,Double
仅具有接受double
和String
的构造函数,而不接受float
。那么这段代码如何编译?
Double d1 = new Double(2.5);
Double d2 = new Double(2.5f); //Why can I pass a float here?
Double d3 = new Double("2.5");
答案 0 :(得分:6)
由于通常可以将float
转换为double
而不会失去精度,因此float
可以自动扩大到double
。有关Java将自动扩展哪些类型的信息,请参见Widening Primitive Conversion。
链接的文档中有一个关于float
/ double
转换的例外情况:
从
float
到double
的原始转换范围不断扩大,strictfp
可能会丢失有关 转换后的值。
答案 1 :(得分:1)