I am trying to understand how the below code is working:
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<Name> namesNew = new ArrayList<Name>();
namesNew.add(name1);
namesNew.add(name2);
List<Name> names = new ArrayList<Name>();
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);
}
}
when the first loop is executed the value of names[0] is being set to name1 but after the send loop is getting executed names[1] and also name[0] is changing to name2 even though i am not setting names[0] anywhere in that code.
Can someone tell me how this is behaving and also what i should do for names[0] to not change.