Déclaration et création de tableaux

Déclaration et création de tableaux

En programmation, on parle de tableau pour désigner un ensemble d’éléments de même type désignés par un nom unique, chaque élément étant repéré par un indice précisant sa position au sein de l’ensemble.Comme tous les langages, Java permet de manipuler des tableaux mais nous verrons qu’il fait preuve d’originalité sur ce point. En particulier, les tableaux sont considérés comme des objets et les tableaux à plusieurs indices s’obtiennent par composition de tableaux.Nous commencerons par voir comment déclarer puis créer des tableaux, éventuellement les initialiser. Nous étudierons ensuite la manière de les utiliser, soit au niveau de chaque élé- ment, soit à un niveau global. Nous examinerons alors la transmission de tableaux en argu- ment ou en valeur de retour d’une méthode. Enfin, nous aborderons la création et l’utilisation des tableaux à plusieurs indices. est destiné à contenir la référence à un tableau d’entiers. Vous constatez qu’aucune dimension ne figure dans cette déclaration et, pour l’instant, aucune valeur n’a été attribuée à pourra très bien évoluer au fil de l’exécution et désigner finalement des tableaux différents, éventuel- lement de tailles différentes.Java se sert du nombre d’expressions figurant dans l’initialiseur pour en déduire la taille du tableau à créer. Notez que ces expressions n’ont pas besoin d’être des expressions constantes ; il suffit simplement qu’elles soient calculables au moment où l’on exécute l’opé- rateur .

On peut manipuler un élément de tableau comme on le ferait avec n’importe quelle variable ou n’importe quel objet du type de ses éléments. On désigne un élément particulier en plaçant entre crochets, à la suite du nom du tableau, une expression entière nommée indice indiquant sa position. Le premier élément correspond à l’indice 0 (et non 1).. Nous apprendrons au Chapitre 10 qu’il est possible d’intercepter une telle exception. Si nous le faisons pas, nous aboutissons simple- ment à l’arrêt de l’exécution du programme ; en fenêtre console s’affichera un message d’erreur.1 Un objet tableau tel que celui crée par new int[3] a une dimension fixée pour toute la durée du programme (même si celle-ci est fixée lors de l’exécution). En revanche, l’objet référencé par t1 pouvant évoluer au fil de l’exécution, sa dimension peut elle aussi évo- luer. Cependant, il ne s’agit pas de tableaux dynamiques au sens usuel du terme. De tels tableaux peuvent être obtenus en Java en recourant à la classe Vector du paquetage java.util.En revanche, une telle compatibilité existera entre un tableau d’objets d’une classe et un tableau d’objets de sa classe de base, comme nous le verrons au chapitre consacré à l’héritage.

La déclaration d’une référence de tableau n’en précise pas la taille et nous avons vu que cette dernière peut évoluer au fil de l’exécution d’un programme. Le champ length permet de con- naître le nombre d’éléments d’un tableau de référence donnée :Comme nous l’avons déjà dit, les éléments d’un tableau peuvent être de type quelconque, et pas seulement d’un type primitif comme dans nos précédents exemples. Voici un exemple de programme utilisant un tableau d’objets de type Point :Lorsqu’on transmet un nom de tableau en argument d’une méthode, on transmet en fait (une copie de) la référence au tableau. La méthode agit alors directement sur le tableau concerné et non sur une copie. On retrouve exactement le même phénomène que pour les objets (para- graphe 9.3 du chapitre 6).En C++, un tableau n’est pas un objet. Il n’existe pas d’équivalent du mot clé length. La transmission d’un tableau en argument correspond à son adresse ; elle est généralement accompagnée d’un second argument en précisant la taille (ou le nombre d’éléments qu’on souhaite traiter à partir d’une adresse donnée, laquelle peut éventuellement correspondre à un élément différent du premier).

 

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *