【问题标题】:Why can't I call toString() on a double value?为什么我不能在 double 值上调用 toString()?
【发布时间】:2013-10-27 19:49:00
【问题描述】:

在 Java 中,我的理解是每个类都继承自 Object。但是如果我调用下面的代码,它就会犹豫:

Math.PI.toString()

它给出了错误:“静态错误:双精度中没有方法名为'toString'”

这是否意味着double不继承自Object?那么什么是双倍呢?

【问题讨论】:

标签: java inheritance


【解决方案1】:

这是否意味着double 不继承自Object

是的。

那么double 是什么?

它是语言本身内置的原始类型。还有其他原始类型,例如charshortintfloatboolean

尽管该语言确实提供了围绕每个基本类型构建的包装器,这些基本类型从 Object 扩展至 IntegerCharacterShortDouble 等。
您可以使用Double.toString(double) 方法获取字符串表示形式。

【讨论】:

    【解决方案2】:

    Math.PIdouble 并且 double 是原始类型,这意味着它没有任何方法。如果它是Double,那么您将能够调用它的toString 方法,但我看不出有任何理由。

    如果你想创建双重使用的字符串表示

    String value = String.valueOf(Math.PI);
    

    String value = Double.toString(Math.PI) 
    

    顺便说一句,String.valueOf(d) 返回Double.toString(d) 的结果。

    【讨论】:

      【解决方案3】:

      不,Math.PI 是双精度(原始,而不是双精度(对象),因此它不会从 Object 继承

      【讨论】:

        【解决方案4】:

        那是因为double 是一个原语。它不继承自 Object 并且没有它的行为。您仍然可以在 Double 上调用 toString(),这又是一个对象。
        阅读有关 Java 中的原语和对象的更多信息。 This 可能有用。

        【讨论】:

          【解决方案5】:

          double 不是对象,而是原语。因此它没有 toString() 等 Object 的方法。

          有一个对象版本的 double 称为 Double,它是一个围绕 double 的对象包装器。

          你可以通过调用Double myDouble = Double.valueOf(primative);来创建一个Double

          Double 还具有静态辅助方法,用于对 toString 等原始对象的常见操作

          打电话给Double.toString(Math.PI); 可能是你想要的

          【讨论】:

            【解决方案6】:

            double 是一个原始类型,但您可以使用 Java 的 Double 类来提供帮助。

            这应该可以满足您的需要:

            Double.toString(Math.PI)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-07-21
              • 2018-07-08
              • 2013-01-17
              • 1970-01-01
              • 1970-01-01
              • 2013-05-19
              • 2011-03-28
              相关资源
              最近更新 更多