int和integer之间的比较(笔试题)
1. int与integer之间的比较
int和integer之间的比较就是数值之间的比较,只要数字相等比较结果就为true(依赖于自动装箱与拆箱的机制)
2.integer之间的比较
Integer i2;
Integer.valueOf(int i);:
这个方法赋值分两种情况,当i的区间在 [-127,127] 之间时,时在常量池中直接获取数据(不重新开辟空间);当区间不在[-127,127]之间,则调用new
Integer(int value)方法,会在堆中开辟一个内存空间。
查看源码
public static Integer valueOf(int i) {
//判断i的区间
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
//不在[-127,127],调用new Integer(int value)
return new Integer(i);
}
new Integer(int value);:这个方法会直接在堆中开辟一个内存空间
下面我们来做一道题:判断输出结果
int i1 = 128;
Integer i2 = 128;
Integer i3 = Integer.valueOf(128);
Integer i4 = new Integer(128);
System.out.println(i1 == i2);//true
System.out.println(i1 == i3);//true
System.out.println(i1 == i4);//true
System.out.println(i2 == i3);//false
System.out.println(i2 == i4);//false
System.out.println(i3 == i4);//false ```
思考:当把所有的128改成127时,输出的结果会有所不同吗?
System.out.println(i2 == i3);//false -> true

本文详细探讨了Java中int与Integer的比较原理,包括自动装箱与拆箱机制,以及Integer缓存机制对比较结果的影响。通过具体示例,解释了在不同数值范围下Integer对象的比较结果差异。
782

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



