public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a==b);
System.out.println(c==d);
}
}
结果为`
true
false
对于Integer,在(-128,128]之间只有固定的256个值,所以为了避免多次创建对象,我们事先就创建好一个大小为256的Integer数组SMALL_VALUES,所以如果值在这个范围内,就可以直接返回我们事先创建好的对象就可以了。
所以上面代码中的两个比较,a,b比较的是数值,而c,d两个比较的是两个不同的对象,所以返回false.
本文深入探讨了Java中Integer对象在(-128,128]区间内的缓存机制,解释了为什么该范围内的Integer对象可以直接复用,从而避免了不必要的对象创建。通过示例代码展示了这一机制如何影响对象的比较结果。
1128

被折叠的 条评论
为什么被折叠?



