OpenJDKでは、メソッドについて:
public static Double valueOf(double d)
javadocは言う:
指定されたdouble値を表すDoubleインスタンスを返します。新しいDoubleインスタンスが必要ない場合、このメソッドは一般的にコンストラクターDouble(double)よりも優先して使用する必要があります。このメソッドは、頻繁に要求される値をキャッシュすることで、スペースと時間のパフォーマンスを大幅に向上させる可能性があるためです。
実際のコードは次のとおりです。
public static Double valueOf(double d) {
return new Double(d);
}
キャッシュは嘘です!何が起きてる?
この方法は、多くの種類のために存在している:Integer
、Long
、BigDecimal
などとドキュメントは常に同じです:(定義されていない)いくつかの状況下では、この方法が可能と同じ結果を返します。
私の知る限り、キャッシングは整数型に対してのみ実装されており、-128から127の間の値(最も一般的な値)のキャッシュされたインスタンスを返します。の場合BigDecimal
、キャッシュは現在0〜10の値で機能します。
それ以降のバージョンのJavaでは、この動作を他の値/より多くの型に拡張する可能性があります。したがって、このコードを使用すると、明日コードが速くなる可能性があるため(今日のコードが遅くなることはありません)、賢明です。
たとえば、Javaコンパイラは、オートボクシング用のコードを生成するときにこのAPIを使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加