Un tableau est-il un objet ?

Un tableau est-il un objet ? - Java - Programmation

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 :
 

Code :
  1. Compte[] tab = new Compte[10];


 
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 :)

Reply

Marsh Posté le 09-12-2012 à 12:06:18   

Reply

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 ..

Reply

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.

Reply

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.

Reply

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 :)

Reply

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 :
  1. Compte[] tab = new Compte[10];
  2. System.out.println(Arrays.asList(tab));


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)


Message édité par masklinn le 10-12-2012 à 13:14:36

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed