Integer 类型的对象,注意是自动装箱生成对象的时候,会有缓存功能。因为只有自动装箱的时候会用到valueOf方法,这个方法中提供了缓存设计。-127-128.
结果:
true
true
false
valueOf中,如果i值为-128到127之间的话,会返回IntegerCache中早已经生成好的Integer对象(从缓存数组中取),如果i超出了这个范围,返回新的Integer。
下面看IntegerCache代码
注意下面的Cache的实现,已经将-128到127的Integer对象存到了Cache中。
其它的包装器:
- Boolean:(全部缓存)
- Byte:(全部缓存)
- Character(<= 127缓存)
- Short(-128 — 127缓存)
- Long(-128 — 127缓存)
- Float(没有缓存)
- Doulbe(没有缓存)