java - Why do original variables change when new variables are changed? -
i have following block of code: arraylist<integer> list1 = new arraylist<integer>(); arraylist<integer> list2 = list1; // both list1 , list2 empty arraylists system.out.println(list1.size()); // prints: 0 list2.add(7); system.out.println(list1.size()); // prints: 1 how come when modify list2, list1 modified? causing concurrentmodificationexception s in program. how can edit list2 without changing list1? list1 , list2 2 different references set refer same object. if want 2 different lists same contents, can make copy: arraylist<integer> list1 = new arraylist<integer>(); arraylist<integer> list2 = new arraylist<integer>(list1);