Integer类型的易错面试题:
Integer在类加载的时候已经缓存了-128-127大小的数据,所以i==j;i1和j1因为不在缓存范围,相当于重新new了两个数据,所以i1,j1的==比较为false。
public class ForTest {
public static void main(String[] args) {
Integer i = 127;
Integer j = 127;
System.out.println(j == i);
System.out.println("==============");
Integer i1 = 128;
Integer j1 = 128;
System.out.println(j1 == i1);
System.out.println(j1.equals(i1));
System.out.println("==============");
Integer i2 = 128;
System.out.println(i2 == 128);
}
}


这篇博客探讨了Java中Integer对象的缓存特性,指出在-128到127之间的Integer对象会使用缓存,导致相等比较返回true。当数值超出此范围时,new操作会导致不同的对象实例,进而使得==比较返回false,而equals方法仍然返回true。
1008

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



