java Integer类缓存问题

Integer缓存

代码:
Integer a = 100;
Integer b = 100;
Integer c = 1000;
Integer d = 1000;
System.out.println(ab);
System.out.println(c
d);

输出:
true
false

解释:
JVM默认会缓存-128-127(如果JVM未配置过相关参数)范围内的Integer对象,避免重复创建对象。
Integer a = 100;//根据值100取缓存,若没有则创建对象
Integer b = 100;//根据值100取缓存,取到了a
Integer c = 1000;//因为值1000超过(-128-127范围),故没有进行缓存,每次都会新创建对象
Integer d = 1000;//同上,新创建对象

如何缓存:
Integer 是用一个Integer数组缓存的
Integer[] cache = new Integer[256];
Integer a = 100;//缓存中没有进行缓存:cache[100] = new Integer(1000);
Integer b = 100;//取缓存cache[100],即为a

(全文完)

(转载本站文章请注明作者和出处 java Integer类缓存问题