不解为什么下面这段代码输出的是:
4:name4
4:name4
4:name4
4:name4
4:name4
为什么不是预期的:
0:name0
1:name1
2:name2
3:name3
4:name4import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String args[]){
ArrayList<Person> A=new ArrayList<Person>();
Person p=new Person();
for(int i=0;i<5;i++){
p.setId(i);
p.setName("name"+i);
A.add(p);
}
for(int i=0;i<5;i++){
System.out.println(A.get(i).getId()+":"+A.get(i).getName());
}
}
}
class Person{
public Person(){
this.setName("");
this.setId(0);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
} public void setId(int id) {
this.id = id;
} public int getId() {
return id;
} private String name;
private int id;
}
4:name4
4:name4
4:name4
4:name4
4:name4
为什么不是预期的:
0:name0
1:name1
2:name2
3:name3
4:name4import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String args[]){
ArrayList<Person> A=new ArrayList<Person>();
Person p=new Person();
for(int i=0;i<5;i++){
p.setId(i);
p.setName("name"+i);
A.add(p);
}
for(int i=0;i<5;i++){
System.out.println(A.get(i).getId()+":"+A.get(i).getName());
}
}
}
class Person{
public Person(){
this.setName("");
this.setId(0);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
} public void setId(int id) {
this.id = id;
} public int getId() {
return id;
} private String name;
private int id;
}
解决方案 »
- 使用TelnetClient类连接HP-UX机器返回乱码问题
- java swing 问题求解
- 初学者求助(if 和 else)
- 为什么该方法不能使纵坐标显示百分比??
- 三天之内不解决,我想我是一个不合格的职员,我想我应该辞职去补习一下了,急sql语句问题,求解,在线等
- <jsp:useBean 命令的参数问题
- 很奇怪的问题,我得OS是XP,JDK是1.5,注册RMI服务总是有问题
- 简单的人机对话,但是输出不对(源码)
- **********在jbuilder8下怎樣直接生成jar文件(第一個答對的就一定給分)
- 如何在java程序中显式地加载某个类并实例化该类??
- java堆栈内存问题
- 关于用UDP编写的Java聊天小程序
for(int i=0;i<5;i++){
p.setId(i);
p.setName("name"+i);
A.add(p);
}
改为 for(int i=0;i<5;i++){
Person p=new Person();
p.setId(i);
p.setName("name"+i);
A.add(p);
}
Person p=new Person();
for(int i=0;i<5;i++){
p.setId(i);
p.setName("name"+i);
A.add(p);
}
虽然经过五次赋值 但是都是针对p这一个对象的 第二次赋值覆盖了第一次赋值 以此类推 最后的结果是id = 4 name = name4
当i = 0时 id = 0;name = name0;A.get(0).getId() = 0 ;A.get(0).getName() = name0;
当i = 1时 id = 1; name = name1; A.get(0).getId() = 1 ;A.get(0).getName() = name1; A.get(1).getId() = 1 ;A.get(1).getName() = name1;
....
A 中的5个p的属性一直是保持一致的 只有分别实例化5个person对象 并分别赋值在添加到A中时 才能得到你想要的结果