因为之前做的C++,现在做Java的时候,经常忘记掉一切皆是对象这个概念。现在正在慢慢改善…
今天在写个测试代码,如下所示:
public static void main(String[] args) {
Integer i1 = 5;
Integer i2 = i1;
i1 += 6;
System.out.println(i1 + " " + i2);
}
我在想,既然一切皆是对象,那么 i1 应该是 11, i2 也应该是 11。
不过打印出来的结果是
11 6
我也知道有自动装箱机制,所以反编译看了一下代码,一切就很好解释了
反编译后的代码:
public static void main(String[] args)
{
Integer i1 = Integer.valueOf(5);
Integer i2 = i1;
i1 = Integer.valueOf(i1.intValue() + 6);
System.out.println(i1 + " " + i2);
}
其中i1 += 6;
这行代码被反编译成i1 = Integer.valueOf(i1.intValue() + 6)
这就是另外一个对象了。
所以 i1 和 i2 此时是不同对象。