以下代码:
User myUser = new User();
User[] array1 = new User[10];
User[] array2 = new User[10];
array1[5] = myUser;
array2[5] = myUser;
对象myUser是存储两次,还是只存储在每个对象上的对象的地址?
如果我开始搞乱变量,那么这仍然存在:
temp = myUser;
array2[4] = temp;
此外,如果我在一个数组中对myUser进行更改,是否会更改另一个数组?
编辑:最后一个问题如何通过值而不是参考来存储它?
答案 0 :(得分:3)
是的,只有对User
对象的引用存储在数组中。每个参考指向同一个对象。通过任一阵列修改对象将修改同一个对象。
同样适用于将变量存储在变量中,如第二个示例所示。
只有primitive types按值存储,例如int
,boolean
,char
。注意,它们也具有相应的参考类型,例如,对于int
,您有Integer
。