这是一个非常基本的问题,但我似乎不明白为什么这不起作用.据我所知,a并将b指向(在C思考中)指向Integer对象.为什么输出3 2而不是3 3?我希望在递增a时,b的值也会增加.
Integer a = new Integer(1);
Integer b = new Integer(2);
a = b;
a++;
System.out.print(a + " " + b);
Run Code Online (Sandbox Code Playgroud)
首先,对于java,使用的术语是对象“引用”而不是“指针”。基本上这意味着它是对实际对象的逻辑引用。
此外,正如 Lagerbaer 已经指出的那样,它的自动装箱-拆箱是透明的,可以有效地增加值,创建一个新对象,然后将其分配回引用。
所以在增量操作结束时,有两个对象而不是一个。
拆箱后的增量操作可能如下所示:
a = Integer.valueOf(a.intValue()++);
Run Code Online (Sandbox Code Playgroud)