为什么更改数组会影响不同的数组

时间:2014-04-08 00:42:04

标签: android arrays object

我将一个数组作为一个对象的一部分,并有一个arraylist。一旦我把对象变成了我用作对象的constucter的变量,一旦它们改变了,那就不应该改变对象了吗?我更不明白的是我从我的对象中获取数组,这是正确的,然后我修改了一个不同的数组,它修改了我从我的对象回来的数组。

                String [] tempnums1 = Contacts.get(0).getNumbers();
                Log.d("array", "tempnums is " + tempnums1[0]);
                numbers[0] = "ive changes";
                Log.d("array", "tempnums again is " + tempnums1[0]);
                String [] tempnums2 = Contacts.get(0).getNumbers();
                Log.d("array", "tempnums2 is " + tempnums2[0]);

第一次打印是正确的,但后来我修改数字[0],当我打印tempnums [0]时,它已经改为" tempnums再次改变了#34;这对我来说毫无意义

1 个答案:

答案 0 :(得分:0)

这很可能是因为Contacts.get(0).getNumbers()在每次调用时返回相同的数组。如果这是正在发生的事情,就没有“不同的阵列” - 只涉及一个阵列。因此,您的代码相当于这样做:

String [] tempnums1 = Contacts.get(0).getNumbers();
Log.d("array", "tempnums is " + tempnums1[0]);
numbers[0] = "ive changes";
Log.d("array", "tempnums again is " + tempnums1[0]);
String [] tempnums2 = tempnums1;
Log.d("array", "tempnums2 is " + tempnums2[0]);

特别是,将数组值赋给数组变量不会生成数组的副本。你(或者更确切地说,getNumbers()或你的调用代码)必须明确地这样做。

相关问题