public class qq {
public static void main(String[] args) {
Integer a=10,b=10;
Integer c=150,d=150;
System.out.println(a==b);
System.out.println(c==d);
}
}
以上代码 对大家都比较简单了, 大多人会说上面是true, false,各种面试宝典都会说字面值在-128-127之间,则会直接引用常量池中的Integer对象
我们来运行一下‘
结果却是这样,分析一下源码,
这段代码一看就清楚了, 相当于默认把 Integer类型的-128 127 放进一个数组里做缓存,所以改变 “java.lang.Integer.IntegerCacge.high”的值就可以设定数组的大小了!
设置JVM参数 -XX:AutoBoxCacheMax=1024即可出现上面的结果