日期:2014-05-20  浏览次数:20768 次

一个LIST问题。
Person类:

public class Person{

public static String No;
public static String Name;

public static String getNo() {
return No;
}
public static void setNo(String no) {
No = no;
}
public static String getName() {
return Name;
}
public static void setName(String name) {
Name = name;
}

}
main方法:

public static void main(String[] args){
List<Person> list =new ArrayList<Person>();
Person person=null;


for (int i = 0; i < 2; i++) {
person=new Person();
person.setNo("no"+(i+1)*2);
person.setName("person"+(i+1)*2);
list.add(person);
}

for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getNo());
System.out.println(list.get(i).getName());
}
}


运行结果:

no4
person4
no4
person4

为什么不是:
no2
person2
no4
person4

困惑了。。。

------解决方案--------------------
public static String No;
public static String Name;

你定义的是类静态成员,也就意味着所有该类的实例全都共享这两个变量,你还困惑个啥?
------解决方案--------------------
public static String No;
你这个定义的是 static 类型的,简单点说,这个类都使用同一个 No变量,所以你取出来的是最后赋值进去的