繁体   English   中英

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

[英]Convert Integer, Double to String in Java

以下哪种方法最好用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)。 第二个更适合于连接更长的字符串。

如果您需要格式化数字以字符串形式表示的方式,则无论如何都需要研究其他类

从官方来源:

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

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

第二个不好的原因是因为代码没有显示您要执行的操作。 该代码说,当您实际上只希望在连接之前发生转换时,您想用一个空字符串来连接该值。

我更喜欢使用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)多了一个调用

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

在字符串类型中,我们有几种方法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方法更灵活,为什么在那里可以使用。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM