2012-06-11 98 views
1

以下哪种方式更适合在Java中将Integer,Double转换为String。将整数,双精度型转换为Java中的字符串

String.valueOf(doubleVal) 
doubleVal + "" 
doubleVal.toString() 

谢谢。

+3

除了调试,所有这些方法都不会令人满意,因为它们没有定义格式。你应该看看'String.format'和'DecimalFormat'。 –

回答

7

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(); 
} 
3

我不认为有性能差异。去最可读的!

第一个和doublevar.toString()完全等价(检查javadoc)。第二个更适合连接更长的字符串。

如果您需要格式化您的号码被表示为一个字符串的方式,反正你需要寻找到other classes

+0

@arturnt有一点。如果你不打算把它和任何东西连接起来,那么第二种方法可能会更糟。 – Miquel

0

从官方源:

public static String valueOf(double d) { 
    return Double.toString(d); 
} 

所以第一个和第三个是不是真的不同,只要doubleValdouble,而不是Double。这是因为在Double的情况下,你会打电话给

public static String valueOf(Object obj) { 
    return (obj == null) ? "null" : obj.toString(); 
} 

第二是肯定更糟,因为的需要连接。

结论:

继的问题,我必须假设的最有效方式是调用toString()方法。

0

第一和第三是好的,第二是坏的。

第二个错误的原因是代码没有显示你想要做什么。该代码表示​​,如果实际上只希望在连接之前发生的转换,您希望将该值与空字符串进行连接。

0

我倾向于使用Integer.toString(int),当您使用String.valueOf(int)时,它内部调用Integer.toString(int)(与long,float和double相同)。但为了便于阅读,最好使用String.valueOf()

0

根据是否使用原型double类型或其对象包装Double,存在轻微的语义差异。

对原始文件double有效的任何东西也适用于包装为Double的对象,但是相反将不起作用。 (即,如果该参数是Double类型的原始双将不被接受。)

而且,Double类型的值可以为空,但是原始double类型不能。

除此之外,根本没有太大的差别。对于你提供的代码片段,没有什么值得真正谈论的。

0

I)将String.valueOf(int i)以 II)Integer.toString(int i)以

寻找这些方法实施后,我看到的是,第一个是调用第二个。因此我的所有来将String.valueOf电话(int i)以涉及比直接调用Integer.toString一个多个呼叫(int i)以

就在做同样的事情

0

在字符串类型不同的方式,我们有几种方法的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方法更灵活,并且为什么在那里可用。

相关问题