Les tableaux en Java et comment elles sont stockées dans la mémoire
J'essaie de comprendre le tableau de configuration java. Pourquoi vous devez initialiser l'espace pour chaque objet du tableau, après avoir créé le tableau. Comment est-il stocké dans la mémoire comme ceci:
[object][object]
ou comme ceci:
[*class]->[object]
[*class]->[object]
En d'autres termes, ce qui est réellement fait dans la mémoire. Ne array[0] = new class()
il suffit de retourner une référence à un emplacement réservé dans la mémoire, et la class[] array = new class[10]
déclaration de créer quelque chose le long des lignes de 10 pointeurs, qui sont par la suite affectés par les nouveaux états?
double possible de Java Tableau est stocké dans la pile ou le tas?
OriginalL'auteur rubixibuc | 2011-04-06
Vous devez vous connecter pour publier un commentaire.
Tableaux en Java magasin de de deux choses l'une: soit des valeurs primitives (
int
,char
, ...) ou des références (un.k.un des pointeurs).Donc,
new Integer[10]
crée de l'espace pour 10Integer
références seulement. Il ne pas créer 10Integer
objets (ou même de l'espace libre pour 10Integer
objets).D'ailleurs c'est exactement de la même manière que les champs, les variables et la méthode/paramètres du constructeur de travail: elles stockent uniquement les valeurs primitives ou des références.
Depuis il n'y a pas de références à des valeurs primitives, les valeurs elles-mêmes sont stockées dans le tableau au lieu de références.
Que dire de la longueur? Les tableaux en Java connaître leur longueur. N'est-ce pas stockées quelque part? Ou est-ce au moment de la compilation seule chose?
OriginalL'auteur Joachim Sauer
Si vous êtes familier avec le C/C++ que vous pouvez penser, de Java, des références à des objets comme des pointeurs vers des objets (ou des pointeurs vers des structures). Donc:
est:
Ainsi, lorsque vous êtes en train de faire:
vous réservez un tableau de 5 références à Personne. Ensuite, vous devrez créer chaque personne réelle, et d'attribuer à chaque référence à un endroit dans le tableau.
Edit: la (presque) C/C++ version du code précédent
et vous pourriez faire
Oui. C'est comme ça. Dans mon exemple de code ps est le tableau. C'est aussi une référence (situé dans la pile) à la structure du tableau (situé dans le tas). La structure du tableau est celui qui va contenir les références pour les cinq objets de la Personne. Je vais ajouter un C/C++ de la traduction 🙂
OriginalL'auteur helios
Les tableaux sont un espace de mémoire, de sorte qu'ils ressemblent plus à votre première esquisse:
[object-reference][object-reference]
array[0] = new class()
va stocker dansarray[0]
une référence au nouvel objet créé.class[] array = new class[10]
va créer un tableau de dix logements vides (ou dix références nulles).OriginalL'auteur Manuel Salvadores