3 votes

allocation pour le tableau et ensuite utilisation du constructeur

Personne.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());
        }
    }
}

Dans le code ci-dessus, nous avons utilisé deux fois "nouveau". Ce code est-il correct ou non ? Le premier est pour l'allocation du tableau. Mais pourquoi le second ? C'est tiré des notes de cours.

10voto

amit Points 74385

Oui, c'est correct.

La ligne :

Person[] people = new Person[20]

alloue le tableau, rempli de références à null alors que la ligne :

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

le remplit [le tableau] en instanciant des objets de type Person et en assignant la référence dans le tableau.

10voto

Taymon Points 8103

new Person[20] crée un tableau qui peut contenir 20 références à Person des objets. Il ne crée pas d'objets réels Person objets.

new Person(...) crée un Person objet.

La distinction essentielle à faire ici est que, contrairement à ce qui se passe en C ou en C++, new Person[20] n'alloue pas de mémoire pour 20 Person objets. Le tableau ne contient pas les objets réels ; il contient seulement références à eux.

2voto

zbyszek26104 Points 323
Person[] people = new Person[20];

n'alloue de la mémoire que pour les objets Personne (remplis de nuls). Ensuite, vous devez la remplir avec des personnes particulières (avec un nom et un prénom aléatoires dans cet exemple).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X