Java では、すべてのクラスが Object から継承されていると理解していました。しかし、次のコードを呼び出すと、ボークします。
Math.PI.toString()
エラーが発生します:「静的エラー:doubleのメソッドに名前 'toString'がありません」
これは double が Object を継承しないということですか? では、ダブルとは何ですか?
Java では、すべてのクラスが Object から継承されていると理解していました。しかし、次のコードを呼び出すと、ボークします。
Math.PI.toString()
エラーが発生します:「静的エラー:doubleのメソッドに名前 'toString'がありません」
これは double が Object を継承しないということですか? では、ダブルとは何ですか?
これは
double
から継承しないということObject
ですか?
はい。
それで、何
double
ですか?
これは、言語自体に組み込まれたプリミティブ型です。、、、、などchar
の他のプリミティブ型があります。short
int
float
boolean
Object
ただし、この言語は、 - Integer
、Character
、Short
、Double
などから拡張された、各プリミティブ型の周りに構築されたラッパーを提供します。メソッドを
使用Double.toString(double)
して文字列表現を取得できます。
Math.PI
isdouble
および 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()
したがって、などのオブジェクトのメソッドはありません。
Double
a のオブジェクト ラッパーであるdouble のオブジェクト バージョンが呼び出されdouble
ます。
呼び出すことで Double を作成できますDouble myDouble = Double.valueOf(primative);
Double
toString などのプリミティブに対する一般的な操作のための静的ヘルパー メソッドもあります。
呼び出しDouble.toString(Math.PI);
はおそらくあなたが望むものです