String
をDouble
データ型に変換したい。 parseDouble
とvalueOf
のどちらを使用すべきかわかりません。
これら2つの方法の違いは何ですか?
parseDouble
は、文字列の値を含むプリミティブdoubleを返します。
クラスDoubleのvalueOfメソッドによって実行されるように、指定されたStringによって表される値に初期化された新しいdoubleを返します。
valueOf
は、Doubleインスタンスを返します。すでにキャッシュされている場合は、同じキャッシュインスタンスを取得します。
指定されたdouble値を表すDoubleインスタンスを返します。新しいDoubleインスタンスが不要な場合、このメソッドは一般的にコンストラクタDouble(double)よりも優先して使用する必要があります。このメソッドは、頻繁に要求される値をキャッシュすることにより、スペースと時間のパフォーマンスが大幅に向上する可能性が高いためです。
新しいDoubleオブジェクトインスタンスを作成するオーバーヘッドを回避するには、通常 valueOf
を使用する必要があります
Double.parseDouble(String)
はプリミティブなdouble
型を返します。 Double.valueOf(String)
は、タイプDouble
のラッパーオブジェクトを返します。
したがって、例えば:
double d = Double.parseDouble("1");
Double d = Double.valueOf("1");
さらに、valueOf(...)
はオーバーロードされたメソッドです。次の2つのバリアントがあります。
parseDouble
は、次のシグネチャを持つ単一のメソッドです。
parseDouble()メソッドは、STRING(数値を含む必要があります)を初期化するために使用されます。..返される値は、int、floatなどのプリミティブデータ型です。
ただし、valueOf()はWrapperクラスのオブジェクトを作成します。 double値を取得するには、ラップを解除する必要があります。チョコレートと比較できます。製造業者は、汚染を防ぐためにチョコレートをホイルまたは紙で包みます。ユーザーはチョコレートを取り、ラッパーを取り外して投げて食べます。
次の変換を確認します。
int k = 100; Integer it1 = new Integer(k);
Intデータ型kは、Integerクラスを使用してオブジェクトit1に変換されます。 it1オブジェクトは、kがオブジェクトを必要とする場合はいつでもJavaプログラミングで使用できます。
次のコードを使用して、オブジェクトit1をアンラップ(整数オブジェクトからintを取得)することができます。
int m = it1.intValue();
System.out.println(m * m); // 10000を印刷します
// intValue()は、intデータ型を返すIntegerクラスのメソッドです。
どちらもStringをdouble値に変換しますが、parseDouble()メソッドはプリミティブdouble値を返しますが、valueOf()メソッドはプリミティブdoubleをプリミティブdouble値を含むDoubleラッパークラスオブジェクトにさらに変換します。
Stringの値がプリミティブdoubleに変換できない場合、Stringからプリミティブdoubleへの変換はNFE(NumberFormatException)をスローする場合があります。
文字列をdoubleデータ型に変換する場合は、ほとんどがparseDouble()メソッドを選択します。サンプルコードを参照してください。
String str = "123.67";
double d = parseDouble(str);
値はdoubleで取得します。 tutorialData のStringToDoubleチュートリアルを参照してください。
parseDouble()
のドキュメントには、「クラスDoubleのvalueOfメソッドによって実行されるように、指定されたStringによって表される値に初期化された新しいdoubleを返す」と書かれているため、同じである必要があります。