使用String初始化Float或执行parseFloat有什么区别?

时间:2014-01-07 01:54:45

标签: java

在编写快速应用程序时,我注意到有两种方法可以将String转换为Float或Integer。

Float f = new Float("0.0327f");
Float f = Float.parseFloat("0.0327f");

Integers存在类似的方法。 这两者有何不同?

2 个答案:

答案 0 :(得分:7)

检查它们的实现(Oracle JDK 7)

public Float(String s) throws NumberFormatException {
    // REMIND: this is inefficient
    this(valueOf(s).floatValue());
}

其中valueOf(String)

public static Float valueOf(String s) throws NumberFormatException {
    return new Float(FloatingDecimal.readJavaFormatString(s).floatValue());
}

parseFloat(String)

public static float parseFloat(String s) throws NumberFormatException {
    return FloatingDecimal.readJavaFormatString(s).floatValue();
}

最后,生成Float的两种方法是等效的。我说等效,因为在你的例子中,

Float f = Float.parseFloat("0.0327f");

float的{​​{1}}结果将被设置为parseFloatboxing process将基本上包裹前一个调用,即。 Float生成的Float.valueOf(Float.parseFloat("0.0327f"))引用将被分配到Float

答案 1 :(得分:0)

没有太大的区别,第一个显式地从输入字符串创建一个新的Float,第二个创建一个新的Float但是通过autoboxing,因为Float.parseFloat返回原始的float。在内部都使用相同的机制来解析输入字符串。