在Java中将整数、双精度转换为字符串

在Java中将整数、双精度转换为字符串,java,Java,在Java中,以下哪种方法更好地将Integer、Double转换为字符串 String.valueOf(doubleVal) doubleVal + "" doubleVal.toString() 谢谢。我认为没有性能差异。选择最具可读性的 第一个完全等同于doublevar.toString检查javadoc。第二个更适合连接较长的字符串 如果您需要将数字表示为字符串的方式进行格式化,那么您无论如何都需要研究一下我认为没有性能差异。选择最具可读性的 第一个完全等同于doublevar.to

在Java中,以下哪种方法更好地将Integer、Double转换为字符串

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

谢谢。

我认为没有性能差异。选择最具可读性的

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


如果您需要将数字表示为字符串的方式进行格式化,那么您无论如何都需要研究一下

我认为没有性能差异。选择最具可读性的

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

如果您需要将数字表示为字符串的方式进行格式化,那么无论如何您都需要研究一下

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();
}
doubleVal+很可能是最糟糕的,因为它必须使用空字符串进行concatation。然而,其他两个是等效的。来自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();
}

官方消息来源:

public static String valueOf(double d) {
    return Double.toString(d);
}
所以第一个和第三个并没有什么不同,只要doubleVal是double而不是double。这是因为在双精度的情况下,您将调用

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
第二种情况当然更糟,因为需要连接

结论:


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

来自官方来源:

public static String valueOf(double d) {
    return Double.toString(d);
}
所以第一个和第三个并没有什么不同,只要doubleVal是double而不是double。这是因为在双精度的情况下,您将调用

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
第二种情况当然更糟,因为需要连接

结论:


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

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


第二个不好的原因是代码没有显示您想要做什么。代码说,当您实际上只需要在连接之前发生的转换时,您希望使用空字符串连接该值。

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


第二个不好的原因是代码没有显示您想要做什么。代码说,当您实际上只需要在连接之前发生的转换时,您希望使用空字符串连接值。

我更喜欢使用Integer.toStringint,当您使用string.valueOfint时,它在内部调用Integer.toStringint与long、float和double相同。但为了可读性,最好使用String.valueOf

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

根据您使用的是原语double类型还是其对象包装double,语义上会有细微的差异

任何对基元双精度编码有效的方法都同样适用于对象包装双精度编码,但相反的方法不起作用。也就是说,如果参数的类型为double,则不接受原语double

此外,Double类型的值可以为null,但原语Double类型不能为null


除此之外,根本没有什么区别。对于您提供的代码片段,没有任何值得讨论的内容。

根据您使用的是原语double类型还是其对象包装double类型,有一些语义上的细微差异

任何对基元双精度编码有效的方法都同样适用于对象包装双精度编码,但相反的方法不起作用。也就是说,如果参数的类型为double,则不接受原语double

此外,Double类型的值可以为null,但原语Double类型不能为null

除此之外,根本没有什么区别。对于您提供的代码片段,没有任何值得讨论的内容。

i String.valueofinit i ii整数toStringint i

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

只是做同一件事的两种不同方法 ii整数toStringint i

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


只有两种不同的方法可以做相同的事情

在字符串类型中,我们有几种方法

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

Double.toString(dobule d)
等等

在我看来,这并不是什么历史事件,但对于开发人员来说,使用字符串类中的方法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方法更灵活,这就是为什么这里有valueOf方法。

在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也是如此

Double.toString(dobule d)
等等

在我看来,这并不是什么历史事件,但对于开发人员来说,使用字符串类中的方法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方法更灵活,这就是为什么这里有可用的原因。

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

双倍值=45.9;
String String_conversion=String.valueOfdouble_val

Java string.valueOf方法将不同类型的值(如long、int、double、float)转换为字符串

双倍值=45.9;
String String_conversion=String.valueOfdouble_val

除了调试,所有这些方法都不会真正令人满意,因为它们没有定义格式化。您应该看看String.format和DecimalFormat。除了调试之外,所有这些方法都不会真正令人满意,因为它们没有定义格式化。您应该看看String.format和DecimalFormat。@arturnt有道理。如果您根本不打算将它与任何东西连接起来,那么第二种方法可能更糟糕。@arturnt有一点。如果您根本不打算将它与任何东西连接起来,那么第二种方法可能更糟糕。