Java类问题

时间:2011-05-18 18:30:18

标签: java

我的课有问题。我创建了自己的名为“Person”的类。其中参数“name”和“age”。在我的其他课程中,我想制作一个Person []。哪个有效,主要问题是数组只保存我输入的最后一个条目。我该如何解决这个问题?

请注意:这不是作业。我正在研究自己的项目。

代码:

     public class Person {

        private static String name;
        private static int age;

        public Person(){
            Person.name = "NAME";
            Person.age = 0;
        }    

        public Diver(String name,int age){
            Person.name = name;
            Person.age = age;

        }

        public static String getName(){
            return Person.name;
        }

        public static int getScore(){
            return Person.age;
        }

        public static String printString(){

            return Person.name + " " + Person.age;
        }


    }

    public class TESTER {
    public static void main(String[]args){
        Person[] persons = new Person[4];
        persons[0] = new Person("bob2",15);
        persons[1] = new Person("bob1",15);
        persons[2] = new Person("bob",16);

        for(int i = 0;i<persons.length;i++){
            System.out.println(persons[i].printString());
        }

    }

}

6 个答案:

答案 0 :(得分:10)

不要让名字和年龄变得静止。此外,使所有方法都是非静态的。

静态变量特定于类。实例变量特定于该类的每个对象。

然后,当在课堂内时,不要将变量称为Person.name,而只需将其称为name

答案 1 :(得分:4)

静态变量是类范围的,这意味着Person的每个实例都共享相同的静态变量。

答案 2 :(得分:0)

public class Person {

private String name;
private int age;

public Person(){
    name = "NAME";
    age = 0;
}    

public Person(String name,int age){
    this.name = name;
    this.age = age;

}

public String getName(){
    return name;
}

public int getScore(){
    return age;
}

public String printString(){

    return name + " " + age;
}

}

在将对象用于对象时不要使用静态变量和方法

答案 3 :(得分:0)

当你有:

class aClass {
   private static String name;
}

创建的该类的每个实例(使用 new 创建的内容)共享SAME“name”变量。 当你这样做时......

class aClass {
   private String name ; 
}

每个实例都有自己独立的名称。

答案 4 :(得分:0)

  

不要让名字和年龄变得静止。

当一个字段是静态的时,它意味着,不是由这个类的实例拥有,而是由类本身拥有。这意味着您的所有应用程序中只有一个变量 name ,并且所有 Person 实例将共享它。 因此,当您更改名称和年龄时,您将更改所有课程,并且他们将拥有您使用的最后一个课程。

答案 5 :(得分:0)

哪个有效,主要问题是数组只保存我输入的最后一个条目。我该如何解决?

这背后的问题是你使用的是静态变量,而应该是实例变量。由于它们是静态的,因此每次都会覆盖它们的一个副本,最后最后一对nameage就是你得到的。

使它们成为实例变量可以解决您的问题。