自定义Java对象的数组

jan*_*din 2 java arrays object

我正在尝试创建一个Person数组(一个带有变量String name和double total的类).但出于某种原因,创建第二个人取代(?)第一个人...

Person[] p = new Person[40];

p[0] = new Person("Jango", 32);
p[1] = new Person("Grace", 455);

System.out.println( p[0].getName() );
System.out.println( p[1].getName() );
System.out.println( p[0].equals(p[1]) );
Run Code Online (Sandbox Code Playgroud)

输出是:

Grace
Grace
false
Run Code Online (Sandbox Code Playgroud)

为什么不呢:

Jango
Grace
false
Run Code Online (Sandbox Code Playgroud)

????????????

public class Person {

    @SuppressWarnings("unused")
    private Person next;
    private static String name;
    private static double total;

    public Person(String _name)
    {
        name = _name;
        total = 0.0;
        next = null;
    }

    public Person(String _name, double _total)
    {
        name = _name;
        total = _total;
        next = null;
    }

    public String getName()
    {
        return name;
    }
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*oel 5

您的问题是name实例变量被声明为静态,使其成为类变量.对该类的每个实例都将更改对name的任何更改.您需要从中删除静态标识符 name,total并且您的代码将正常工作.