alokowanie dla tablicy, a następnie użycie konstruktora

Person.java
public class Person {
    public String firstName, lastName;

    public Person(String firstName,
            String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFullName() {
        return(firstName + " " + lastName);
    }
}
PersonTest.java
public class PersonTest {
    public static void main(String[] args) {
        Person[] people = new Person[20];              //this line .
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0; i<people.length; i++) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; people[i] =&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new Person(NameUtils.randomFirstName(),
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NameUtils.randomLastName()); &nbsp;//this line
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; for(Person person: people) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Person's full name: " +
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; person.getFullName());
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
}

W powyższym kodzie użyliśmy dwa razy „nowego”. Czy ten kod jest poprawny lub zły? Pierwszy dotyczy alokacji tablicy. Ale dlaczego drugi? To z notatek z wykładów.