2014-04-08 26 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()或你的調用代碼)必須明確地做到這一點。

相關問題