1,自动装箱
如
Integer a = 1;
这样的代码会自动装箱,也就是会调用Integer类的static valueOf(int i)方法;
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
如果数字i在low和high之间,将从缓存中取出已经实例化好的实例;否则实例化integer对象。数字值则用integer类的成员变量value保存。
下面打个断点验证下
可见对象a的value为1。表示确实已经把等号右边的1转换成了integer类实例。
下面看缓存代码
static {
// high value may be configured by property
int h = 127;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty(