我的课有问题。我创建了自己的名为“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());
}
}
}
答案 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)
哪个有效,主要问题是数组只保存我输入的最后一个条目。我该如何解决?
这背后的问题是你使用的是静态变量,而应该是实例变量。由于它们是静态的,因此每次都会覆盖它们的一个副本,最后最后一对name
和age
就是你得到的。
使它们成为实例变量可以解决您的问题。