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困惑了

解决方案 »

  1.   

    public static String No;
    public static String Name;你定义的是类静态成员,也就意味着所有该类的实例全都共享这两个变量,你还困惑个啥?
      

  2.   

    public static String No;
    你这个定义的是 static 类型的,简单点说,这个类都使用同一个 No变量,所以你取出来的是最后赋值进去的
      

  3.   

    如果写成私有的就不会有问题了。
    public class Person{private String No;
    private String Name;private String getNo() {
    return No;
    }
    private void setNo(String no) {
    this.No = no;
    }
    public String getName() {
    return Name;
    }
    public void setName(String name) {
    this.Name = name;
    }}
      

  4.   

    java实体类都是 private属性+getter setter,
      

  5.   

    public static String No;
    public static String Name;你定义的是类静态成员,也就意味着所有该类的实例全都共享这两个变量