如题。。。。。。。。。。。。。。。。。。。
------解决思路----------------------
Integer源码
static final Integer[] cache = new Integer[-(-128) + 127 + 1];
static {
for (int i = 0; i < cache.length; i++) {
cache[i] = new Integer(i - 128);
}
}
从上面代码可以看出,系统把-128~127之间的整数自动装箱成Integer实例,并放入一个名为cache的数组缓存起来。==比较的是地址,222不在常量池范围内,所以在自动装箱过程中需new 222,所以地址不一样。建议比较对象值最好用equal()方法。
------解决思路----------------------
那是因为你启动参数没加 -XX:AutoBoxCacheMax=10086