在Java中将Integer,Double转换为String

以下哪种方法最好将Java中的Integer,Double转换为String。

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

谢谢。

doubleVal + ""很可能是最糟糕的,因为它必须用空字符串进行连接。 但是,其他两个是等价的。 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)。 第二个更适合连接更长的字符串。

如果您需要格式化数字表示为String的方式,则无论如何都需要查看其他类

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

第二个是坏的原因是因为代码没有显示你想要做什么。 代码表示当您实际只想要在串联之前发生的转换时,您希望将值与空字符串连接起来。

我更喜欢使用Integer.toString(int) ,当你使用String.valueOf(int) ,它在内部调用Integer.toString(int) (与long,float和double相同)。 但为了便于阅读,最好使用String.valueOf()

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

任何适用于原始double也适用于包裹Double的对象,但相反的方法不起作用。 (也就是说,如果参数是Double类型,则不接受原始double。)

此外, Double类型的值可能为null,但原始double类型不能。

除此之外,没有太大的区别。 对于您提供的代码片段,没有任何值得真正谈论的内容。

i)String.valueOf(int i)ii)Integer.toString(int i)

在查看了这些方法的实现后,我看到第一个调用第二个方法。 因此,我对String.valueOf(int i)的所有调用都涉及一次调用,而不是直接调用Integer.toString(int i)

只做两种不同的方式做同样的事情

在String类型中,我们有几个方法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方法更灵活,为什么在那里可用。

来自官方消息来源:

 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()方法。