Les bases de Java : les tableaux

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);

Étiquettes: Java tableaux mémoire Programmation orientée objet algorithmes de base

Publié le 23 juin à 19h27