Un tableau est-il un objet ? - Java - Programmation
Marsh Posté le 09-12-2012 à 12:41:24
Est-ce qu'un tableau est un objet ? j'ai envie de dire que ça dépend du langage.
Dans ton exemple, c'est objet. Et un objet peut en contenir d'autres ..
Marsh Posté le 09-12-2012 à 13:26:11
l'énoncé exact de la question est :
"Combien d'objets (au sens de java) sont réellement créés en mémoire lors de l'exécution de la méthode main()"
sachant qu'il y a plein d'autres new après mais qui ne me posent pas de problème sachant que ce n'est pas des tableaux.
Marsh Posté le 09-12-2012 à 15:08:52
Je suis pas trop sûr, mais je pense que c'est un seul objet qui est géré en mémoire : le tableau d'objets : pour un tableau statique, connaissant sa taille et la taille du type d'objet, l'information est suffisante pour réserver de l'espace mémoire.
Marsh Posté le 10-12-2012 à 12:27:04
oui au final je crois que tu as raison, en tout cas c'est ce que mon prof m'a dis.
merci bien
Marsh Posté le 10-12-2012 à 13:09:14
windux a écrit : Je suis pas trop sûr, mais je pense que c'est un seul objet qui est géré en mémoire : le tableau d'objets : pour un tableau statique, connaissant sa taille et la taille du type d'objet, l'information est suffisante pour réserver de l'espace mémoire. |
La taille du type d'objet n'a aucune importance, les objets ne sont pas directement dans le tableau (contrairement à un tableau de struct C), il ne stocke que des références vers les objets (ou — la valeur par défaut — null s'il n'y a aucun objet à l'index) (pour les arrays vers des objets, les arrays vers des valeurs genre int[] sont différents)
Ici il n'y a qu'un objet alloué en Java: le tableau même, tous les indices sont à null. C'est facile à voir avec un peu de logging:
Code :
|
sortie:
[null, null, null, null, null, null, null, null, null, null] |
(le Arrays.asList, c'est parce-que le toString d'un array est inutilisable, ça balance un truc genre [LCompte;@56e5b723, celui qu'une liste imprime une sorte d'array litéral avec les toString des membres — ou null si l'index est vide)
(edit: à partir de java 5, il y a Arrays.toString et Arrays.deepToString qui fonctionnent directement sur les arrays sans avoir besoin de passer par asList, mais les vieilles habitudes sont dures à perdre)
(Arrays.toString et Arrays.deepToString ont l'avantage de fonctionner correctement sur les arrays de value types, ce qui n'est pas le cas de asList)
Marsh Posté le 09-12-2012 à 12:06:18
Bon dimanche à tous !
Alors voila ma question qui vous paraitra peut être bête mais qui me torture l'esprit :
Un tableau est il considéré comme un objet ?
par exemple :
c'est un seul objet crée en mémoire ou 10 objet de type Compte crée en mémoire ?
j'aurai plus tendance à choisir la deuxième solution...
voila merci d'avance