# Java/Tableaux
## Tableaux

Pratiquement tous les langages gèrent les tableaux. Utiliser des tableaux en C ou C++ est dangereux car ces tableaux ne sont que des blocs de mémoire. Si un programme accède à un tableau en dehors de son bloc mémoire, ou s'il utilise la mémoire avant initialisation (erreurs de programmation fréquentes) les résultats seront imprévisibles.
Un des principaux objectifs de Java est la sécurité, aussi, un grand nombre des problèmes dont souffrent C et C++ ne sont pas rejetées sous Java. On est assuré qu'un tableau Java est initialisé et qu’il ne peut être accessible au delà de ses bornes. La vérification des bornes se fait au prix d’un petit excédent de mémoire pour chaque tableau ainsi que la vérification de l'index lors de l'exécution, mais on suppose que le gain de sécurité et en productivité vaut la dépense.
Quand on crée un tableau d'objet, on crée en réalité un tableau de références, et chacune de ces références est automatiquement initialisée à une valeur particulière avec son propre mot clé : null. Quand Java voit null, il reconnaît que la référence en question ne pointe pas vers un objet. Il faut affecter un objet à chaque référence avant de l’utiliser et si on essaye d’utiliser une référence encore null, le problème sera signalé lors de l'exécution. Ainsi, les erreurs typiques sur les tableaux sont évitées en Java.
On peut aussi créer des tableaux de variables de types primitif. À nouveau, le compilateur garantit l'initialisation car il met à zéro la mémoire utilisée par ces tableaux.
Les tableaux se distinguent des autres conteneurs sur deux points : l'efficacité et le type. Un tableau constitue la manière la plus efficace que propose Java pour stocker et accéder aléatoirement à une séquence d'objets (en fait de référence sur ces objets). Un tableau est une simple séquence linéaire, ce qui rend l'accès aux éléments extrêmement rapide; mais cette rapidité se paye : la taille d’un tableau est fixée lors de la création et ne peut plus être changé pendant toute la durée de sa vie. Une solution est de créer un nouveau tableau et de déplacer toutes les références de l'ancien tableau vers le nouveau.

## Déclaration de tableaux

La création de tableaux en Java se fait à peu près de la même manière que la création de variables. Prenons l'exemple suivant :
Il est possible de faire des tableaux de tout type de données, y compris les types que l’on crée soit même (mais nous verrons ça dans le chapitre sur les objets). Il est aussi possible de créer des tableaux de tableaux et plus encore. Par exemple :
Remarque : un tableau ne peut contenir qu'un seul type de donnée. Ainsi, il est impossible de stocker des entiers dans un tableau qui a été déclaré comme contenant des chaînes de caractères.

## Utilisation de tableaux

Maintenant que l’on sait déclarer un tableau, il peut être intéressant de savoir comment s'en servir. Plusieurs choses sont à savoir :
* la première est comment utiliser les objets présents dans le tableau
* la deuxième est comment utiliser de manière pratique les tableaux
Ici, on utilise une boucle for pour parcourir l’ensemble du tableau. On utilisera le plus souvent ce genre de boucle sur les tableaux car leur taille est définie lors de la déclaration et donc on connait leur taille. Pour être sûr de ne pas se tromper sur la taille du tableau, ce qui nous ferait sortir du tableau lors de l'exécution de la boucle, on utilise ici la méthode length qui est valable sur tous les tableaux de données de type de base.
Si l’on crée un tableau d'objets qui ne sont pas d’un type de base, il faudrait alors utiliser la méthode length héritée de Object mais on reverra ceci plus en détail dans la partie destinée aux objets.
monTableau[i] désigne le i+1 ième entier de monTableau
| Boucles et structures conditionnelles | Classes et objets |