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