Structures de données
Vous pouvez retrouver le jeu
ici.
Quel mot clé permet de définir un tuple ?
- class
- struct
- main
- public
class
Si o = new Truc(), alors :
- o est un tableau de Truc
- o est une instance de Truc
- o référence une instance de Truc
- o référence un tableau de Truc
o référence une instance de Truc. En effet, en Java,
les variables et les champs sont soit des références vers des objets (tuples ou tableaux),
soit des primitifs.
Sachant que Perso possède un champ name de type String,
qu'affiche ce programme ?
- Une erreur
- null
- Bilbon
- Sauron
Sauron. Comme représenté sur la figure, les variables
bilbon de main et perso
de f sont des variables de type référence vers une instance de Perso.
Lors de l'appel de f, perso reçoit
une copie de la référence vers l'instance de Perso
allouée dans main (c'est-à-dire que les objets sont passés par référence).
L'affectation perso.name = "Sauron" modifie donc l'objet
référencé par bilbon dans le cadre de main.
Sachant que Perso possède un champ name de type String,
qu'affiche ce programme ?
- Une erreur
- null
- Bilbon
- Sauron
Sachant que Perso possède un champ name de type String,
qu'affiche ce programme ?
- Une erreur
- null
- Bilbon
- Sauron
Sauron.
La méthode main commence par allouer un Perso, stocke
une référence vers cette instance dans la variable bilbon,
puis initialise le champ name de cette instance vers
la chaîne de caractères "Bilbon".
Ensuite, la méthode main alloue un tableau de Perso,
initialise chacune des cases du tableau avec la référence bilbon,
puis stocke la référence vers le tableau dans la variable persos.
Au résultat, bilbon et chacune des trois cases du tableau référencent
la même instance de Perso.
En particulier, persos[0] et persos[1] référencent
la même instance de Perso, ce qui explique pourquoi
persos[1].name vaut "Sauron" après
que la méthode main ait effectué l'affectation persos[0].name = "Sauron".