用对象填充数组

时间:2013-10-18 13:53:12

标签: java arrays

我有一个名为Person的类,如下所示:

public class Person
{
    public static String name;
    public static int regNumber;

    public   String getName() {
       return name;
    }

    public  int getRegNumber() {
       return regNumber;
    }

    public Person(int x) {

       this.name = n;
       this.regNumber = x;
    }
}

我使用这个类来填充学生的数组:

public class PeopleArray
{
    public static void main(String[]args) {

        Person [] students = new Person[3];
        int reg = 1;
        for (int i = 0; i<students.length; i++) {

           students[i] = new Person(reg++);

        }

        for (Person stu: students) {
           System.out.println(stu.getRegNumber());
        }

     }
}

问题在于,当我尝试打印出每个人的年龄时,似乎数组中只填充了Person类创建的最后一个对象,因为打印的唯一数字是数字2。 / p>

我做错了什么?

4 个答案:

答案 0 :(得分:5)

字段nameregNumberstatic,这意味着它们不属于任何特定实例,而是属于整个类。您需要做的就是从static中的字段声明中删除Person关键字,使其成为实例变量而不是类变量

我还建议您阅读Understanding Instance and Class Members

答案 1 :(得分:3)

尝试重新阅读Person字段声明:

public static String name;
public static int regNumber;

您已使用static成员,如果删除此关键字,则应该开始工作。

答案 2 :(得分:0)

您需要从static中删除instance variables。如果您在static中使用了instance variables,那么名称和注册号中会出现上次修改后的值。

public class Person{
    public String name;
    public int regNumber;

}

答案 3 :(得分:0)

Person类中的构造函数为名称指定变量“n”。但是你没有在任何地方定义它。 除此之外,请从变量中删除“static”关键字。