2

Java では、すべてのクラスが Object から継承されていると理解していました。しかし、次のコードを呼び出すと、ボークします。

Math.PI.toString()

エラーが発生します:「静的エラー:doubleのメソッドに名前 'toString'がありません」

これは double が Object を継承しないということですか? では、ダブルとは何ですか?

4

6 に答える 6

6

これはdoubleから継承しないということObjectですか?

はい。

それで、何doubleですか?

これは、言語自体に組み込まれたプリミティブ型です。、、、、などcharの他のプリミティブ型があります。shortintfloatboolean

Objectただし、この言語は、 - IntegerCharacterShortDoubleなどから拡張された、各プリミティブ型の周りに構築されたラッパーを提供します。メソッドを
使用Double.toString(double)して文字列表現を取得できます。

于 2013-10-27T19:50:56.130 に答える
4

Math.PIisdoubleおよび double はプリミティブ型であり、メソッドがないことを意味します。そうであればDouble、そのtoStringメソッドを呼び出すことができますが、その理由はわかりません。

二重使用の文字列表現を作成したい場合

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

また

String value = Double.toString(Math.PI) 

ところでString.valueOf(d)、 の結果を返しますDouble.toString(d)

于 2013-10-27T19:50:44.113 に答える
3

いいえ、Math.PI は double (プリミティブであり、Double (Object) ではないため、Object から継承しません。

于 2013-10-27T19:51:11.287 に答える
3

doubleプリミティブだからです。から継承せObjectず、その動作を持ちません。オブジェクトを順番にtoString()呼び出すことはできます。 Java のプリミティブとオブジェクトの詳細を参照してください。これは役に立つかもしれません。Double

于 2013-10-27T19:51:27.937 に答える
2

doubleオブジェクトではなく、プリミティブです。toString()したがって、などのオブジェクトのメソッドはありません。

Doublea のオブジェクト ラッパーであるdouble のオブジェクト バージョンが呼び出されdoubleます。

呼び出すことで Double を作成できますDouble myDouble = Double.valueOf(primative);

DoubletoString などのプリミティブに対する一般的な操作のための静的ヘルパー メソッドもあります。

呼び出しDouble.toString(Math.PI);はおそらくあなたが望むものです

于 2013-10-27T19:52:18.830 に答える