一个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变量,所以你取出来的是最后赋值进去的