您如何看待以下代码行?:
String s= "10.0";
float f = Float.valueOf(s).floatValue();//1
有必要吗?为什么使用这样的语法而不是使用:
float f = Float.valueOf(s);//2
利用自动装箱功能,它仍然给出相同的结果。
简而言之,我的问题是:为什么要选择第一种语法而不是第二种语法?它们完全一样吗?
简而言之,我的问题是:为什么要选择第一种语法而不是第二种语法?它们完全一样吗?
好吧,我不会使用它们,因为它们都会生成中间Float
对象,这几乎总是不需要的。无论在哪里需要它,我们都会让它与拳击一起工作。
现在,您应该只使用Float.parseFloat(String)
生成原始浮点数的方法。
就相似性而言,不,它们并不完全相同。第二个涉及auto-unboxing
from Float
to float
,而unboxing
第一种情况没有。它使用给定的方法进行转换。
不同之处在于第一个显式转换为浮点数,
而第二个让它出箱。
在 Java 1.3 上,自动装箱不可用!
此外,在某些情况下,自动装箱会产生不需要的结果。
对于自动装箱失败的情况:请参阅
Josh Bloch:有效的 Java 第二版
f = Float.valueOf(s);
自动装箱功能是在 Java 5 之后引入的。这段代码在 Java 的早期版本中编译时会出错。