В OpenJDK для метода:
public static Double valueOf(double d)
В javadoc говорится:
Возвращает двойной экземпляр, представляющий указанное двойное значение. Если новый экземпляр Double не требуется, этот метод обычно должен использоваться в предпочтении конструктору Double (double), так как этот метод может значительно улучшить производительность пространства и времени за счет кэширования часто запрашиваемых значений.
Вот фактический код:
public static Double valueOf(double d) {
return new Double(d);
}
Кэш - ложь! Что здесь происходит?