Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缓存实例在多大程度上用于公共浮点值和双精度值?_Java_Autoboxing - Fatal编程技术网

Java 缓存实例在多大程度上用于公共浮点值和双精度值?

Java 缓存实例在多大程度上用于公共浮点值和双精度值?,java,autoboxing,Java,Autoboxing,对于Integer和其他一些数值类型,在调用valueOf或自动装箱原语值时,将重新使用表示-128到127范围内的值的实例 但是浮动和双浮动呢?它可能同样使用缓存值的提示: 如果不需要新的Float实例,通常应使用此方法 优先于构造函数Float(Float)使用,如此方法 很可能通过以下方式产生显著更好的空间和时间性能 缓存频繁请求的值 但是,与“此方法将始终缓存范围内的值…”相比,此语句的确定性较差,并且未说明可能存在此优化的一组值。那么这在实践中是如何表现的呢?虽然Javadoc说可以使

对于Integer和其他一些数值类型,在调用valueOf或自动装箱原语值时,将重新使用表示-128到127范围内的值的实例

但是浮动和双浮动呢?它可能同样使用缓存值的提示:

如果不需要新的Float实例,通常应使用此方法 优先于构造函数Float(Float)使用,如此方法 很可能通过以下方式产生显著更好的空间和时间性能 缓存频繁请求的值


但是,与“此方法将始终缓存范围内的值…”相比,此语句的确定性较差,并且未说明可能存在此优化的一组值。那么这在实践中是如何表现的呢?

虽然Javadoc说可以使用缓存,但我只是在我的JDK(版本8)中检查了实现,没有实现缓存:

public static Float valueOf(float f) {
    return new Float(f);
}

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

我不知道这种缓存有多有效。与
整数
字节
字符
(其中缓存的值是一个小的连续数字序列)不同,应该缓存哪些
浮点
值不太清楚。

研究
浮点值的实现(JDK 8),我看到它只是通过调用构造函数来创建一个新的Float对象

public static Float valueOf(float f) {
    return new Float(f);
}
因此,这可能是对未来的优化