Présentation des tableaux
Un tableau (array) est une structure de données stockant plusieurs éléments du même type. En mémoire, il occupe un espace contigu, formant une séquence linéaire ordonnée.
Définition d'un tableau
Deux syntaxes sont disponibles pour déclarer un tableau en Java :
// Syntaxe recommandée
type[] nomVariable;
// Alternative moins courante
type nomVariable[];
Exemple concret :
int[] nombres;
String[] etiquettes;
Initialisation des tableaux
L'initialisation consiste à allouer l'espace mémoire et définir les valeurs des éléments.
Initialisation dynamique
On spécifie la taille du tableau. Les valeurs par défaut sont assignées (0 pour les types primitifs, null pour les objets).
type[] tableau = new type[taille];
Exemple :
double[] mesures = new double[5];
Initialisation statique
Les valeurs sont fournies dircetement à la déclaration.
type[] tableau = {val1, val2, val3};
// Alternative
type[] tableau = new type[]{val1, val2, val3};
Exemple :
char[] voyelles = {'a', 'e', 'i', 'o', 'u'};
Accéder aux éléments
On utilise l'opérateur d'indexation [] avec un index commençant à 0.
int premier = nombres[0];
String dernier = etiquettes[etiquettes.length - 1];
Gestion mémoire des tableaux
Les tableaux en Java sont des objets stockés dans la zone mémoire "heap". Les variables de référence pointent vers ces objets.
int[] source = {10, 20, 30};
int[] copie = source;
// copie et source référencent le même objet tableau
Problèmes courants
Dépassement d'index (ArrayIndexOutOfBoundsException)
Accéder à un index inexistant provoque cette exception. L'index doit être compris entre 0 et longueur-1.
Référence nulle (NullPointerException)
Tenter d'utiliser un tableau non initialisé (valant null) déclenche cette exception.
Opérations courantes
Parcours de tableau
Avec une boucle for classique :
int[] donnees = {15, 25, 35, 45};
for (int compteur = 0; compteur < donnees.length; compteur++) {
System.out.println(donnees[compteur]);
}
Avec une boucle for-each :
int[] donnees = {15, 25, 35, 45};
for (int valeur : donnees) {
System.out.println(valeur);
}
Obtenir la longueur
String[] noms = {"Alice", "Bob", "Charlie"};
int longueur = noms.length; // valeur 3
Trouver les valeurs extrêmes
Recherche du maximum :
int[] serie = {8, 3, 12, 7, 1};
int maximum = serie[0];
for (int element : serie) {
if (element > maximum) {
maximum = element;
}
}
System.out.println("Valeur maximale: " + maximum);
Recherche du minimum :
int[] serie = {8, 3, 12, 7, 1};
int minimum = serie[0];
for (int i = 1; i < serie.length; i++) {
if (serie[i] < minimum) {
minimum = serie[i];
}
}
System.out.println("Valeur minimale: " + minimum);