Java自动装箱值(字符串)

Java自动装箱值(字符串),java,string,int,boxing,value-of,Java,String,Int,Boxing,Value Of,您对以下代码行有何看法 String s= "10.0"; float f = Float.valueOf(s).floatValue();//1 有必要吗?为什么使用这样的语法比使用: float f = Float.valueOf(s);//2 它仍然利用自动装箱功能提供相同的结果 简言之,我的问题是:为什么要选择第一种语法而不是第二种?它们是完全相同的吗?不同之处在于第一个明确地转换为float, 而第二个让它出局。 在Java 1.3上,自动装箱不可用 此外,在某些情况下,自动

您对以下代码行有何看法

 String s= "10.0";
  float f = Float.valueOf(s).floatValue();//1
有必要吗?为什么使用这样的语法比使用:

float f = Float.valueOf(s);//2
它仍然利用自动装箱功能提供相同的结果


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

不同之处在于第一个明确地转换为float,
而第二个让它出局。

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

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

Josh Bloch:有效的Java第二版

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

我不会使用这两种方法,因为它们都会生成中间
Float
对象,这几乎总是不需要的。无论什么地方需要它,我们都会让它与拳击一起工作

现在,您应该只使用生成基本浮点的方法


就相似性而言,不,它们并不完全相同。第二种情况涉及从
Float
Float
自动取消装箱
,而在第一种情况下没有
取消装箱
。它使用给定的方法进行转换

f=浮动。值为(s)


自动装箱功能是在Java5之后引入的。在早期版本的Java中编译时,此代码将给出一个错误。

在垃圾收集方面,仍然首选第二个(Float.valueOf(s))而不是(Float.valueOf(s).floatValue()。后一个在堆中创建匿名对象,而前一个则不创建,尽管它使用了取消装箱。哪一个更有效?我知道它最好使用parseFloat(String)但是如果我必须在2个之间进行选择,你会建议什么?(也在垃圾收集方面)谢谢你advance@Rollerball.不,在这两种情况下,您都在创建一个对象,正如我在回答中所说。
Float.valueOf
方法返回
new Float()
。因此,仅在那里创建一个对象。因此,基于垃圾收集的比较没有意义。@Rollerball。如果您强制我仅从前两个中进行选择(我会为此诅咒你),我会选择第二个,并利用自动拆箱,不会手动完成该任务。