public class BoxingTest {
public static void main(String[] args){
Integer a = 100;
Integer b = 100;
System.out.println(a == b); //true
Integer c = new Integer(200);
Integer d = new Integer(200);
System.out.println(c == d); //false
Integer e = 300;
Integer f = 300;
System.out.println(e == f); //false
Integer i = 127;
Integer j = 127;
System.out.println(i == j); //?
Integer m = 128;
Integer n = 128;
System.out.println(m == n); //?
}
}
乍一看,百思不得其解,为什么第一个结果为true,后面两个结果却都是false呢?
本文通过几个示例探讨了Java中自动装箱和拆箱过程中可能遇到的问题,特别是Integer对象在不同情况下的比较行为。展示了当Integer对象值在-128到127之间时,会复用对象导致==比较返回true的现象;而超过此范围或使用new关键字创建时,则会产生不同的对象实例。
5903

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



