2

您如何看待以下代码行?:

 String s= "10.0";
  float f = Float.valueOf(s).floatValue();//1

有必要吗?为什么使用这样的语法而不是使用:

float f = Float.valueOf(s);//2

利用自动装箱功能,它仍然给出相同的结果。

简而言之,我的问题是:为什么要选择第一种语法而不是第二种语法?它们完全一样吗?

4

3 回答 3

5

简而言之,我的问题是:为什么要选择第一种语法而不是第二种语法?它们完全一样吗?

好吧,我不会使用它们,因为它们都会生成中间Float对象,这几乎总是不需要的。无论在哪里需要它,我们都会让它与拳击一起工作。

现在,您应该只使用Float.parseFloat(String)生成原始浮点数的方法。


就相似性而言,不,它们并不完全相同。第二个涉及auto-unboxingfrom Floatto float,而unboxing第一种情况没有。它使用给定的方法进行转换。

于 2013-02-11T22:25:37.013 回答
0

不同之处在于第一个显式转换为浮点数,
而第二个让它出箱。

在 Java 1.3 上,自动装箱不可用!

此外,在某些情况下,自动装箱会产生不需要的结果。
对于自动装箱失败的情况:请参阅

Josh Bloch:有效的 Java 第二版

于 2013-02-11T22:25:18.760 回答
0

f = Float.valueOf(s);

自动装箱功能是在 Java 5 之后引入的。这段代码在 Java 的早期版本中编译时会出错。

于 2013-02-11T22:26:10.920 回答