Java では、すべてのクラスが Object から継承されていると理解していました。しかし、次のコードを呼び出すと、ボークします。
Math.PI.toString()
エラーが発生します:「静的エラー:doubleのメソッドに名前 'toString'がありません」
これは double が Object を継承しないということですか? では、ダブルとは何ですか?
Java では、すべてのクラスが Object から継承されていると理解していました。しかし、次のコードを呼び出すと、ボークします。
Math.PI.toString()
エラーが発生します:「静的エラー:doubleのメソッドに名前 'toString'がありません」
これは double が Object を継承しないということですか? では、ダブルとは何ですか?
これは
doubleから継承しないということObjectですか?
はい。
それで、何
doubleですか?
これは、言語自体に組み込まれたプリミティブ型です。、、、、などcharの他のプリミティブ型があります。shortintfloatboolean
Objectただし、この言語は、 - Integer、Character、Short、Doubleなどから拡張された、各プリミティブ型の周りに構築されたラッパーを提供します。メソッドを
使用Double.toString(double)して文字列表現を取得できます。
Math.PIisdoubleおよび double はプリミティブ型であり、メソッドがないことを意味します。そうであればDouble、そのtoStringメソッドを呼び出すことができますが、その理由はわかりません。
二重使用の文字列表現を作成したい場合
String value = String.valueOf(Math.PI);
また
String value = Double.toString(Math.PI)
ところでString.valueOf(d)、 の結果を返しますDouble.toString(d)。
いいえ、Math.PI は double (プリミティブであり、Double (Object) ではないため、Object から継承しません。
doubleプリミティブだからです。から継承せObjectず、その動作を持ちません。オブジェクトを順番にtoString()呼び出すことはできます。
Java のプリミティブとオブジェクトの詳細を参照してください。これは役に立つかもしれません。Double
doubleオブジェクトではなく、プリミティブです。toString()したがって、などのオブジェクトのメソッドはありません。
Doublea のオブジェクト ラッパーであるdouble のオブジェクト バージョンが呼び出されdoubleます。
呼び出すことで Double を作成できますDouble myDouble = Double.valueOf(primative);
DoubletoString などのプリミティブに対する一般的な操作のための静的ヘルパー メソッドもあります。
呼び出しDouble.toString(Math.PI);はおそらくあなたが望むものです