Comment déclarer un tableau statique en java

Résolu/Fermé
amaradelll
Messages postés
84
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juillet 2010
- 12 mars 2008 à 21:55
 sof - 17 févr. 2014 à 08:56
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

kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 524
13 mars 2008 à 17:36
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
ça ne marche pas pour moi.
0
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 524
12 mars 2008 à 23:50
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};

4
amaradelll
Messages postés
84
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juillet 2010
33
13 mars 2008 à 17:21
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.
1
ouiii good
0
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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amaradelll
Messages postés
84
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juillet 2010
33
13 mars 2008 à 19:09
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];
0
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
0
ca ve dire quoi public etudiant [] amis;
0