1

Java 中将 Integer、Double 转换为 String 哪种方式更好。

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

谢谢。

4

9 回答 9

8

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();
}
于 2012-06-11T08:39:29.773 回答
3

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

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

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

于 2012-06-11T08:37:33.343 回答
0

来自官方来源:

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

所以第一个和第三个并没有真正的不同,只要doubleValisdouble和 not Double。这是因为在 a 的情况下Double,您将调用

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

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

结论:

在这个问题之后,我必须假设最有效的方法是调用该toString()方法。

于 2012-06-11T08:40:14.887 回答
0

第一个和第三个都好,第二个不好。

第二个不好的原因是代码没有显示你想要做什么。代码表示您想将值与空字符串连接起来,而实际上您只需要在连接之前发生的转换。

于 2012-06-11T08:40:21.833 回答
0

我更喜欢使用Integer.toString(int),当你使用 时String.valueOf(int),它会在内部调用 to Integer.toString(int)(与 long、float 和 double 相同)。但是为了可读性,最好使用String.valueOf()

于 2012-06-11T08:40:51.227 回答
0

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

任何适用于原语的东西double也适用于包装的对象Double,但反之则行不通。(也就是说,如果参数类型为 ,则不会接受原始双精度Double。)

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

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

于 2012-06-11T08:41:58.997 回答
0

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

在查看了这些方法的实现之后,我看到第一个正在调用第二个。因此,我对 String.valueOf(int i) 的所有调用都比直接调用 Integer.toString(int i) 多一个调用

只是做同一件事的两种不同方式

于 2012-06-11T08:44:46.757 回答
0

在 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 中看到的,我们必须进行两项更改,这与示例 1 不同。

我的结论是使用 String 类中的 valueOf 方法更灵活,这就是为什么在那里可用。

于 2012-06-11T08:52:56.427 回答
0

Java string.valueOf() 方法将long、int、double、float 等不同类型的值转换为String。

双 double_val=45.9; 字符串 string_conversion=String.valueOf(double_val);

于 2019-08-15T10:54:58.833 回答