我有一个数组:
ArrayList<Person> people = new ArrayList();
我想将人员添加到数组中,但我不认为它会起作用,因为所有对象都具有相同的名称。
Person person = new Person();
person.firstName = firstNameTextField.getText();
person.lastName = lastNameTextField.getText();
//Etc
people.add(person);
我的问题是,我可以使用相同变量名的对象填充数组吗?如果没有,我怎么还能使用People
个对象?
答案 0 :(得分:0)
对象与变量名无关!是的,当然会起作用!
答案 1 :(得分:0)
是的,你对你所描述的内容没有任何疑问。
你最终会得到这样的东西:
Person person = new Person();
person.firstName = firstNameTextField.getText();
person.lastName = lastNameTextField.getText();
people.add(person);
person = new Person(); // <-- reinitializing person.
person.firstName = firstNameTextField.getText();
person.lastName = lastNameTextField.getText();
people.add(person);
此时List包含两个唯一的Person对象。迭代它们可能看起来像这样:
ArrayList<Person> people = new ArrayList();
// add a bunch of Person objects like we did above
for(int i = 0; i < people.size(); i++) {
System.out.println("Found person: " + people.get(i).firstName);
}
您继续拨打people.add(个人)电话,并不一定会反复将同一个人重复添加到您的列表中。在上面显示的情况中,添加了唯一的Person对象,可以单独访问,如for循环中所示。
答案 2 :(得分:0)
如果你是懒人,你也可以在People中使用构造函数。
class Person {
public Person(String firstname, String lastname) {
this.firstname=firstname;
this.lastname=lastname;
}
}
然后......
people.add(new People("tom", "lastnameoftom"));
people.add(new People("Susi", "SusisLastname"));
依旧......
但要回答你的问题..每次在var上使用new时,都会重新初始化。编译器将翻译这个:
People people = new People();
people.setSetter(data);
people = new People();
people.setSetter(otherdata);
到(示例)
People a = new People();
a.setSetter(data);
People b = new People();
b.setSetter(otherdata);