我想了解下面的代码是如何工作的:
public class Sample {
public static void main(String[] args) {
Name defaultName = new Name();
defaultName.setFirstName("defaultfirst");
defaultName.setLastName("defaultlast");
Name name1 = new Name();
name1.setFirstName("name1First");
name1.setLastName("name1Last");
Name name2 = new Name();
name2.setFirstName("name2First");
name2.setLastName("name2Last");
List namesNew = new ArrayList();
namesNew.add(name1);
namesNew.add(name2);
List names = new ArrayList();
for(int i=0;i<2;i++){
Name name = defaultName;
name.setFirstName(namesNew.get(i).getFirstName());
name.setLastName(namesNew.get(i).getLastName());
System.out.println(i+ " name " +name);
names.add(name);
System.out.println(i +" " +names);
}
System.out.println(names);
}
}当执行第一个循环时,名称[0]的值被设置为name1,但在发送循环得到执行后,即使我没有设置名称[0],名称[1]和名称[0]也将更改为名称2,该代码中的任何地方。
有人能告诉我这是怎么回事,还有我应该怎么做名字[0]不改变。