import java.util.ArrayList;
public class bugs
{
public ArrayList<Integer> elements1;
public ArrayList<Integer> elements2;
public bugs(ArrayList<Integer> args)
{
elements1 = args;
elements2 = args;
}
public void change(int index, int value)
{
elements1.set(index, value);
}
public void reset()
{
elements1 = elements2;
}
public static void main(String[] a)
{
ArrayList<Integer> stuff = new ArrayList<Integer>();
stuff.add(1);
stuff.add(1);
stuff.add(1);
stuff.add(1);
bugs b = new bugs(stuff);
b.change(2, 999);
b.reset();
System.out.println(b.elements2);
}
}
此輸出工作:的ArrayLists未如預期
[1,1,999,1]
第二數組列表elements2
有到ArrayList elements1
復位到其初始位置。然而,由於某種原因,elements1
正在被拷貝到elements2
,打印
[1,1,999,1]
和不
[1,1,1,1 ]
爲什麼你認爲它應該打印'[1,1,1,1]'?需要注意的是'elements2','elements1'和'stuff'是整個程序的整個運行時間的***同***對象。改變一個的內容也會改變另外兩個的內容。 – luk2302
閱讀本U移動之前http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html – emotionlessbananas
和[1,1,1,1]你需要你將它添加999之前(重置複印一份) – emotionlessbananas