Comment déclarer un tableau statique en java [Résolu/Fermé]

Signaler
Messages postés
84
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juillet 2010
-
 sof -
Bonjour tout le monde,

Voila je voudrais savoir comment déclarer en Java un tableau statique sans initialisation et un tableau dynamique?.

Moi ce que je sais, c'est que : en C, pour déclarer un tableau de 5 caractères T statique on écrit comme suit : char T[5], et un tableau dynamique en utilisant la fonction "malloc".

Or en java ce n'est pas la même chose.

Alors si quelqu'un peut me dire comment déclarer un tableau statique (sans initialisation) et dynamique (comment faire l'allocation en Java?).

Merci d'avance.

5 réponses

Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 519
Si justement c'est le new qui alloue l'espace.
Quand tu fais :
int tab[];

Tu crées un objet qui n'a pas été alloué. Tu peux voir ça comme un pointeur, au fnal c'est pas si différent. Et là le pointeur tab ne pointe sur rien.

Et après, l'opérateur new va instancier l'objet "tableau d'entier de n cases". Ca c'est du vocabulaire Java, mais au final ce qu'il se passe, c'est la même chose qu'un malloc. new va allouer de l'espace mémoire et tab pointera vers cet espace:
tab = new int[50];
17
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

ça ne marche pas pour moi.
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 519
Salut,

Ya pas moyen de le faire de manière statique en Java.
Il faut toujours allouer de la place avec l'opérateur new.

Ou à la rigueur comme ça:
int tab[] = {0,1,2};

Messages postés
84
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juillet 2010
33
Bonjour kilian.

Merci pour l'éclaircissement, mais...

Si j'ai bien compris, le new va créer un pointeur sur le type, mais comment faire l'allocation elle même?, par exemple pour allouer 500 cases vide (sans initialisation). en utilisant le C c'est le "malloc". Et en Java?!!!.

Merci.
Bonjour,
Le plus simple est d'utiliser un vecteur il est plus dynamique on peux à tout moment changer sa taille...
Mais tu peux bien créer un tableau comme ceci:
int tab[];sans utiliser le new mais lors de son utilisation il faut obligatoirement allouer avec le new donc impossible de créer un tableau en java sans le new.
Bon courage!
Messages postés
84
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juillet 2010
33
Merci a vous mes amis (kilian et ray_fab), maintenant je peux continuer à programmer.

Merci infiniment.

Récapitulation :

Donc pour allouer a un tableau T un espace de 100 (Par exemple), on procéde de cette manière :

1. Déclarer le tableau T comme ceci : type T[];

2. Lui allouer un espace de N comme suit : T=new int[100];
Salut,

Ou en une seule ligne et en respectant les conventions qui veulent que le nom d'un tableau commence par une minuscule:

int[] t = new int[100];
ou bien:
int t[] = new int [100];

Noter que les 100 éléments étant des int seront initialisés à zero, des String seraient initialisés à null etc...

Mais, que comme indiqué par kilian, procéder comme ci-dessous pour initialiser le tableau avec des valeurs "choisies" :
int tab[] = {0,1,2}; et on obtiendra un tableau d'int le taille 3 et dont les 3 éléments seront initialisés, le premier à zéro, le second à 1 et le troisième à 2 (et sans utiliser new).

Dan
ca ve dire quoi public etudiant [] amis;