Java在ValueOf(double/float)方法中不提供DoubleCache或FloatCache

Java在ValueOf(double/float)方法中不提供DoubleCache或FloatCache,java,integer,Java,Integer,我已经看到java提供了IntegerCache、ShortCache和ByteCahce。。但Double/Float类中没有缓存逻辑。是不是因为与int相比,使用双精度值的频率不会太高?Java doc of建议有一个缓存,但没有 返回表示指定双精度值的双精度实例。如果不需要新的Double实例,通常应优先使用此方法,而不是构造函数Double(Double),因为通过缓存频繁请求的值,此方法可能会产生显著更好的空间和时间性能。 从-128到127的值将从您提到的三个值中缓存,这三个值在自动

我已经看到java提供了IntegerCache、ShortCache和ByteCahce。。但Double/Float类中没有缓存逻辑。是不是因为与int相比,使用双精度值的频率不会太高?

Java doc of建议有一个缓存,但没有

返回表示指定双精度值的双精度实例。如果不需要新的Double实例,通常应优先使用此方法,而不是构造函数Double(Double),因为通过缓存频繁请求的值,此方法可能会产生显著更好的空间和时间性能。


从-128到127的值将从您提到的三个值中缓存,这三个值在自动装箱时使用。

integral wrappers中的缓存策略基于这样一个前提,即存在某些经常使用的整型值。FP类型没有这样的前提。是的,这就是我的想法,但我想确认一下。它在什么地方被记录了吗?是的,根据JDK 6源代码,公共静态Double valueOf(Double d){return new Double(d);}..正在创建相同的新实例。。假设JDK 7也有相同的源代码。@AKS Java 6文档中也有相同的@ALLL。。那么我应该在这里得出什么结论呢?javadocs有问题吗?首先,假设下一个版本不会改变这一点是不明智的。其次,Javadoc没有什么问题。使用工厂是明智的。嗯,我以前考虑过这个。文档可能只是考虑了缓存的可能性,而实现者意识到缓存双重/浮动的特性很少产生明显的好处。