Integer和 String 也一样在栈中?
想问大家一个问题:
当我 每每: Integer integer01 = new Integer(1);的时候,这当然不会缓存,因为每 new 一次都会在堆中生成一个新的对象。
然后我想问的是,如果我 :Integer integer02 = Integer.valueOf(1);
的时候,是不是也想 String 一样,将 值保存在栈中池?
[解决办法]
栈 和 java栈 不是一个东西
堆 和 java堆 也不是一个东西
java栈中的内容是栈帧,栈帧中还有一个操作数栈
每个启动一个java线程就会关联一个java栈,每调用一个java方法就会将一个栈帧入栈
楼主你说的栈究竟是指哪一个?
[解决办法]
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}