gpt4 book ai didi

java - 为什么 Double.valueof javadoc 说它缓存值,而实际上没有?

转载 作者:IT老高 更新时间:2023-10-28 20:27:54 24 4
gpt4 key购买 nike

在OpenJDK中,对于方法:

public static Double valueOf(double d)

javadoc 说:

Returns a Double instance representing the specified double value. If a new Double instance is not required, this method should generally be used in preference to the constructor Double(double), as this method is likely to yield significantly better space and time performance by caching frequently requested values.

这是实际代码:

public static Double valueOf(double d) {
return new Double(d);
}

缓存是个谎言!这是怎么回事?

最佳答案

该方法适用于多种类型:IntegerLongBigDecimal 等,文档始终相同:在某些情况下(没有定义),方法可以返回相同的结果。

AFAIK,缓存仅针对整数类型实现,它返回 -128 和 127 之间的值(最常见的值)的缓存实例。对于 BigDecimal,缓存当前适用于 0 到 10 的值。

Java 的更高版本可能将此行为扩展到其他值/更多类型。因此,今天使用此代码是明智的,因为它可能使您的代码明天更快(并且今天的代码不会变慢)。

例如,Java 编译器在为自动装箱生成代码时使用此 API。

关于java - 为什么 Double.valueof javadoc 说它缓存值,而实际上没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com