In OpenJDK, for the method:
public static Double valueOf(double d)
The javadoc says:
Returns a Double instance repre
These valueOf() methods exist in every numeric type for the purpose to support caching. In fact, for Double it does not use any cache but for Integer and Long.
valueOf()
Integer
Long