2014-04-08 24 views
0

我把一个数组作为对象的一部分,并有一个数组列表。一旦我将对象作为对象的对象,一旦它们发生改变,就不应该改变对象的对象了吗?我甚至不了解更多的是我从我的对象中取出数组,然后我修改了一个不同的数组,并修改了我从对象中取回的数组。为什么更改一个数组会影响不同的数组

   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又是香港专业教育学院改变了”,这没有意义,我

回答

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()或你的调用代码)必须明确地做到这一点。

相关问题