在 Java 5 中,为 Integer 的操作引入了一个新的特性,用来节省内存和提高性能。整型对象在内部实现中通过使用相同的对象引用实现了缓存和重用。
适用区间:-128 到 +127
在创建新的 Integer 对象之前会先在 IntegerCache.cache 中查找。有一个专门的 Java 类来负责 Integer 的缓存。(IntegerCache 具体可以参看源码)
这个缓存会在 Integer 类第一次被使用的时候被初始化出来。以后,就可以使用缓存中包含的实例对象,而不是创建一个新的实例(在自动装箱的情况下)。
最大值 127 可以通过 JVM 的启动参数 -XX:AutoBoxCacheMax=size 修改
这种 Integer 缓存策略仅在自动装箱(autoboxing)的时候有用,使用构造器创建的 Integer 对象不能被缓存。
测试如下:
是什么原因选择这个 -128 到 127 这个范围呢?
因为这个范围的整数值是使用最广泛的。