【问题标题】:Convert Integer, Double to String in Java在 Java 中将 Integer、Double 转换为 String
【发布时间】:2019-08-15 18:54:58
【问题描述】:

在Java中,Integer、Double 到 String 的转换哪种方式比较好。

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

谢谢。

【问题讨论】:

  • 除了调试之外,所有这些方法都不会真正令人满意,因为它们没有定义格式。你应该看看String.formatDecimalFormat

标签: java


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为没有性能差异。选择最易读的!

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

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

    【讨论】:

    • @arturnt 有道理。如果你根本不打算将它与任何东西连接起来,那么第二种方法可能更糟。
    【解决方案3】:

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

    第二个不好的原因是代码没有显示你想要做什么。代码说你想用一个空字符串连接值,而你实际上只想要连接之前发生的转换。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        根据您使用的是基本类型 double 还是其对象包装器 Double,语义上存在细微差别。

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

        另外,Double 类型的值可能为 null,但基本的 double 类型不能。

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            【解决方案7】:

            在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 方法更灵活,这就是为什么在那里可用。

            【讨论】:

              【解决方案8】:

              来自官方:

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

              【讨论】:

                【解决方案9】:

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

                双 double_val=45.9; String string_conversion=String.valueOf(double_val);

                【讨论】:

                  猜你喜欢
                  • 2022-01-10
                  • 2014-12-19
                  • 2011-08-22
                  • 2014-09-24
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-09-23
                  • 2021-11-09
                  相关资源
                  最近更新 更多