一个LIST问题。

dl8217 2012-03-27 12:27:23
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

困惑了。。。
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
X497347200 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dl8217 的回复:]
引用 1 楼 ldh911 的回复:
public static String No;
public static String Name;

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

太粗心了。明白了。。
[/Quote]
java实体类都是 private属性+getter setter,
dl8217 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ldh911 的回复:]
public static String No;
public static String Name;

你定义的是类静态成员,也就意味着所有该类的实例全都共享这两个变量,你还困惑个啥?
[/Quote]
太粗心了。明白了。。
酒比花香 2012-03-27
  • 打赏
  • 举报
回复
如果写成私有的就不会有问题了。
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;
}

}
酒比花香 2012-03-27
  • 打赏
  • 举报
回复
public static String No;
你这个定义的是 static 类型的,简单点说,这个类都使用同一个 No变量,所以你取出来的是最后赋值进去的
MiceRice 2012-03-27
  • 打赏
  • 举报
回复
public static String No;
public static String Name;

你定义的是类静态成员,也就意味着所有该类的实例全都共享这两个变量,你还困惑个啥?
wyx100 2012-03-27
  • 打赏
  • 举报
回复
public static String No;
public static String Name;

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

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧