Integer 缓存
- 整数区间 -128 到 +127。最大值 127 可以通过 JVM 的启动参数 -XX:AutoBoxCacheMax=size 修改。
- 这种缓存行为不仅适用于Integer对象。我们针对所有整数类型的类都有类似的缓存机制。
- 有 ByteCache 用于缓存 Byte 对象
- 有 ShortCache 用于缓存 Short 对象
- 有 LongCache 用于缓存 Long 对象
- 有 CharacterCache 用于缓存 Character 对象
- Byte,Short,Long 有固定范围: -128 到 127。对于 Character, 范围是 0 到 127。除了 Integer 可以通过参数改变范围外,其它的都不行。
实现机制
内部类IntegerCache 预先存储静态数组,-128-127的对象数组:cache[]; 判断value值在范围内则使用缓存值。
DEMO
Integer integer3 = 300; Integer integer4 = 300;
if (integer3 == integer4)
System.out.println("integer3 == integer4");
else
System.out.println("integer3 != integer4");
System.out.println("integer3:"+integer3+" integer4:"+integer4);
Integer integer5 = 3;
Integer integer6 = 3;
System.out.println("integer5:"+integer5+" integer6:"+integer6);
if (integer5 == integer6)
System.out.println("integer5 == integer6");
else
System.out.println("integer5 != integer6");