可能重复:
在 Java 中使用 == 运算符比较包装器对象
java版本1.6.0_26
来自SCJP 考试准备的书:
为了节省内存,以下的两个实例[-128 和 127 中的短整数和整数,以及其他一些但无关紧要的问题] 包装对象(通过 boixng 创建),当它们的原始值是相同。
我做了什么:
如果我们像这样比较两个从 -128 到 127 的整数:
1. Integer i1 = 10;
2. Integer i2 = 10;
3. System.out.println(i1 == i2); // true
但是为什么同样给我们“假”或者可能是不一样的东西:
4. Integer i3 = new Integer(10);
5. Integer i4 = new Integer(10);
6. System.out.println(i3 == i4); // false
我的问题:
1)我们是否在第一行代码中进行隐式装箱?
2) 为什么第 3 行和第 6 行代码给了我们不同的结果?