68

データ型に変換Stringしたい。またはDoubleを使用する必要があるかどうかわかりません。parseDoublevalueOf

これら2つの方法の違いは何ですか?

4

6 に答える 6

86

parseDouble文字列の値を含むプリミティブ double を返します。

クラス Double の valueOf メソッドによって実行されるように、指定された String によって表される値に初期化された新しい double を返します。

valueOfDouble インスタンスを返します。すでにキャッシュされている場合は、キャッシュされた同じインスタンスを取得します。

指定された double 値を表す Double インスタンスを返します。新しい Double インスタンスが必要ない場合、このメソッドは、頻繁に要求される値をキャッシュすることにより、スペースと時間のパフォーマンスが大幅に向上する可能性が高いため、通常、コンストラクター Double(double) よりも優先して使用する必要があります。

新しい Double オブジェクト インスタンスを作成するオーバーヘッドを回避するには、通常、次を使用する必要があります。valueOf

于 2012-05-14T04:49:23.407 に答える
37

Double.parseDouble(String)doubleプリミティブ型 を返します。Double.valueOf(String)タイプのラッパーオブジェクトを返しますDouble

たとえば、次のようになります。

double d = Double.parseDouble("1");

Double d = Double.valueOf("1");

さらに、valueOf(...)オーバーロードされたメソッドです。これには 2 つのバリアントがあります。

  1. Double valueOf(String s)
  2. Double valueOf(double d)

一方parseDouble、次のシグネチャを持つ単一のメソッドです。

  1. double parseDouble(String s)
于 2012-05-14T05:28:55.917 に答える
1

どちらも String を double 値に変換しますが、parseDouble() メソッドがプリミティブ double 値を返すのに対して、valueOf() メソッドはさらにプリミティブ double をプリミティブ double 値を含む Double ラッパー クラス オブジェクトに変換します。

String からプリミティブ double への変換では、String の値がプリミティブ double に変換できない場合、NFE(NumberFormatException) がスローされることがあります。

于 2012-05-14T06:30:41.817 に答える
0

文字列を double データ型に変換する場合は、ほとんどが parseDouble() メソッドを選択します。サンプル コードを参照してください。

String str = "123.67";
double d = parseDouble(str);

double で値を取得します。tutorialDataの StringToDouble チュートリアルを参照してください。

于 2012-05-14T05:09:12.663 に答える
0

のドキュメントにparseDouble()は、「クラス Double の valueOf メソッドによって実行されるように、指定された文字列によって表される値に初期化された新しい double を返す」と記載されているため、それらは同一である必要があります。

于 2012-05-14T04:49:14.593 に答える