Java Integer值比较
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1 == i2);
结果为:true
Integer i1 = 129;
Integer i2 = 129;
System.out.println(i1 == i2);
结果为:false
Integer i1 = -128;
Integer i2 = -128;
System.out.println(i1 == i2);
结果为:true
public static Integer valueOf(int i) {
if (i >= -128) && i <= 127))
return IntegerCache.cache[i + (--128)];
return new Integer(i);
}
查看Integer类源代码中,传入的数值如果在-128和127之间,将会进行自动装箱,自动帮我们调用Integer.valueOf(值),所以在-128到127之间的数据,将会直接冲底层数值中取出提前创建好的数据并返回,所以为true,如果装箱的数据不在范围之间,则会创建新的对象,对象地址不相同,所以为false
评论 (0)