67,513
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class ListTest {
public static void main(String [] args) {
List<Person> persons1 = new ArrayList<Person>(5);
Person personOnlyOne = new Person();
for (int i=0;i<5;i++) {
//每次都对该句柄指向的对象进行修改,并置入list中,那么list中最终所有的
//Person对象都是同一个对象,自然也就一改全改了
personOnlyOne.setName("person_" + i);
persons1.add(personOnlyOne);
}
System.out.println(persons1);
//比较这两个对象的内存地址,结果显示这两个对象其实是同一个对象
System.out.println(persons1.get(0) == persons1.get(1));
List<Person> persons2 = new ArrayList<Person>(5);
for (int i=0;i<5;i++) {
Person person = new Person();
person.setName("person_" + i);
persons2.add(person);
}
System.out.println(persons2);
System.out.println(persons2.get(0) == persons2.get(1));
}
}
class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override public String toString() {
return name;
}
}