web-dev-qa-db-ja.com

Double.parseDouble(String)とDouble.valueOf(String)の違いは何ですか?

StringDoubleデータ型に変換したい。 parseDoublevalueOfのどちらを使用すべきかわかりません。

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

59
Bobs

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

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

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

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

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

74
MByD

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)
32
Priyank Doshi

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クラスのメソッドです。

1
rohanpro

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

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

1

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

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

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

0
Rajshri

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

0
Rob I