以下哪种方式更适合在Java中将Integer,Double转换为String。将整数,双精度型转换为Java中的字符串
String.valueOf(doubleVal)
doubleVal + ""
doubleVal.toString()
谢谢。
以下哪种方式更适合在Java中将Integer,Double转换为String。将整数,双精度型转换为Java中的字符串
String.valueOf(doubleVal)
doubleVal + ""
doubleVal.toString()
谢谢。
doubleVal + ""
是最有可能最糟糕的,因为它必须做concatanation一个空字符串。但是,其他两个是相同的。从OpenJDK的源代码:
// java.lang.String
public static String valueOf(double d) {
return Double.toString(d);
}
// java.lang.Double
public static String toString(double d) {
return new FloatingDecimal(d).toJavaFormatString();
}
我不认为有性能差异。去最可读的!
第一个和doublevar.toString()完全等价(检查javadoc)。第二个更适合连接更长的字符串。
如果您需要格式化您的号码被表示为一个字符串的方式,反正你需要寻找到other classes
@arturnt有一点。如果你不打算把它和任何东西连接起来,那么第二种方法可能会更糟。 – Miquel
从官方源:
public static String valueOf(double d) {
return Double.toString(d);
}
所以第一个和第三个是不是真的不同,只要doubleVal
是double
,而不是Double
。这是因为在Double
的情况下,你会打电话给
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
第二是肯定更糟,因为的需要连接。
结论:
继的问题,我必须假设的最有效方式是调用toString()
方法。
第一和第三是好的,第二是坏的。
第二个错误的原因是代码没有显示你想要做什么。该代码表示,如果实际上只希望在连接之前发生的转换,您希望将该值与空字符串进行连接。
我倾向于使用Integer.toString(int)
,当您使用String.valueOf(int)
时,它内部调用Integer.toString(int)
(与long,float和double相同)。但为了便于阅读,最好使用String.valueOf()
根据是否使用原型double
类型或其对象包装Double
,存在轻微的语义差异。
对原始文件double
有效的任何东西也适用于包装为Double
的对象,但是相反将不起作用。 (即,如果该参数是Double
类型的原始双将不被接受。)
而且,Double
类型的值可以为空,但是原始double
类型不能。
除此之外,根本没有太大的差别。对于你提供的代码片段,没有什么值得真正谈论的。
I)将String.valueOf(int i)以 II)Integer.toString(int i)以
寻找这些方法实施后,我看到的是,第一个是调用第二个。因此我的所有来将String.valueOf电话(int i)以涉及比直接调用Integer.toString一个多个呼叫(int i)以
就在做同样的事情
在字符串类型不同的方式,我们有几种方法的valueOf
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(char[] data)
static String valueOf(char[] data, int offset, int count)
static String valueOf(double d)
static String valueOf(float f)
static String valueOf(int i)
static String valueOf(long l)
static String valueOf(Object obj)
正如我们可以看到这些方法能够解决所有类型的数字
具体方法的每个实现像你提出:那么对于双
Double.toString(dobule d)
等
在我看来,这不是一些历史的东西,但更实用的开发者使用从不是从正确的类型String类的方法的valueOf,因为较少变化,使我们想要改变我们运营的类型。
示例1:
public String doStaff(int num) {
//Do something with num
return String.valueOf(num);
}
样品2:
public String doStaff(int num) {
//Do somenthing with num
return Integer.toString(num);
}
正如我们在样品2中看到的,我们必须做两种变化,相反品尝之一。
我的结论是使用String类中的valueOf方法更灵活,并且为什么在那里可用。
除了调试,所有这些方法都不会令人满意,因为它们没有定义格式。你应该看看'String.format'和'DecimalFormat'。 –