Search code examples
javaarraysconstructorallocation

allocating for array and then using constructor


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 .
        for(int i=0; i<people.length; i++) {
            people[i] = 
                new Person(NameUtils.randomFirstName(),
                        NameUtils.randomLastName());  //this line
        }
        for(Person person: people) {
            System.out.println("Person's full name: " +
                    person.getFullName());
        }
    }
}

In above code, we used twice "new". Is this code is correct or wrong? First one is for allocation of array. But why the second one? It's from lecture notes.


Solution

  • Yes, it is correct.

    The line:

    Person[] people = new Person[20]
    

    allocates the array, full of references to null while the line:

    new Person(NameUtils.randomFirstName(),
                          NameUtils.randomLastName());  //this line
    

    fills it [the array] by instantiating objects of type Person, and assigning the reference in the array.