Integer.valueOf(String s);//采用了亨元设计模式;亨元模式: 它是以一种“节约内存,提高性能”为出发点的设计模式,运用共享技术有效的支持大量细粒度对象的复用。源码解析:
private static class IntegerCache {
static final int low = -128
;
static final int high;
static final Integer cache[];
//类加载时提前先把-127到128
static {
// high value may be configured by property
int h = 127
;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high"
);
if (integerCacheHighPropValue !=
null) {
try {
int i =
parseInt(integerCacheHighPropValue);
i = Math.max(i, 127
);
// Maximum array size is Integer.MAX_VALUE
h = Math.min(i, Integer.MAX_VALUE - (-low) -1
);
} catch( NumberFormatException nfe) {
// If the property cannot be parsed into an int, ignore it.
}
}
high =
h;
//high=128,low=-127,cache.length=256
cache =
new Integer[(high - low) + 1
];
int j =
low;
for(
int k = 0; k < cache.length; k++
)
//将0-255放入缓存中
cache[k] =
new Integer(j++
);
// range [-128, 127] must be interned (JLS7 5.1.7)
assert IntegerCache.high >= 127
;
}
private IntegerCache() {}
}