VI -Tableaux, chaînes et classes de base

 

Dans ce chapitre, nous allons présenter les principales classes de base disponibles dans l'API Java.

 

1. Les tableaux

Un tableau est un ensemble de données du même type, auxquelles on accède via un indice ou index. En Java, les tableaux statiques n'existent pas. Cela signifie qu'il est obligatoire d'allouer dynamiquement un tableau avec l'opérateur new, comme on le fait quand on instancie un objet, suivant la syntaxe :

type nom_tableau[] = new type [nombre_éléments];

Exemple :

int tableau [] = new int[10];

Le nom du tableau est suivi de crochets [] afin de le différencier d'un objet classique. Il est cependant possible d'indiquer ces crochets entre le type et le nom du tableau :

int [] tableau = new int [10];

Le nombre entre crochets, à la fin de la déclaration, permet d'indiquer le nombre d'éléments contenus dans le tableau.

Pour accéder à un élément d'un tableau, on spécifie le nom de ce dernier suivi d'un indice placé entre crochets : a = tableau[2]; affecte la valeur du troisième élément du tableau à la variable a (les indices des tableaux commencent en effet à 0).

Si l'on désire connaître la taille d'un tableau, il suffit de consulter la valeur (en lecture seule) length, associée à un objet de type tableau.

Exemple : if (tableau.length>10) //...

Notons enfin qu'il est possible de définir des tableaux à plusieurs dimensions, comme dans l'exemple suivant :

int tableau [][] = new tableau [10][5];

On juxtapose donc autant de couples de crochets qu'il y a de dimensions dans le tableau.

 

2. Types composites

En Java, à chaque type de base, comme int, double,...est associé une classe portant le même nom que le type (sauf pour int qui devient Integer et char qui devient Character) mais dont la première lettre est une majuscule. On peut ainsi appliquer des méthodes à ces objets, ce qui n'était pas possible pour les types de base.

Exemple :

Integer Entier = new Integer(1);

On passe en fait la valeur de l'entier au constructeur de l'objet correspondant. Nous verrons plus loin l'intérêt de ces types composites.

 

3. Les chaînes de caractères

Contrairement au C, une chaîne de caractères n'est pas un tableau de caractères dont le dernier élément est nul. Il existe en effet en Java une véritable classe dédiée aux chaînes, appelée String. Exemple :

String chaine = "Je suis une chaîne";.

Il est cependant possible de créer une chaîne à partir d'un tableau de caractères.

Exemple :

char TabCar [] = {'C', 'h', 'a', 'î', 'n', 'e'};

String Chaine = new String (TabCar);

// Chaine = "Chaîne"

La classe String comprend un certain nombre de méthodes particulièrement utiles. On peut par exemple concaténer des chaînes ou des valeurs numériques :

int entier = 23;

String chaine = "Rendez-vous chambre " + entier + ".";

// chaine = "Rendez-vous chambre 23."

On peut également convertir explicitement un entier en une chaîne grâce à la méthode valueOf :

String chaine = String.valueOf(entier); // chaine = "23"

Il faut aussi savoir que de nombreuses classes en Java possèdent une méthode toString() qui renvoie la représentation de l'objet considéré sous forme de chaîne. Cette méthode ne peut s'appliquer qu'aux types composites.

Exemple :

Integer Entier = new Integer(10);

String chaine = Entier.toString(); // chaine = "10";

Parmi toutes les méthodes de la classes String, on peut citer indexOf(caractère) qui renvoie la position dans la chaîne du caractère précisé en argument, equals (chaine) ou equalsIgnoreCase(chaîne) qui permettent de comparer deux chaînes, respectivement en tenant compte ou non des majuscules/minuscules, ou encore Substring(index) qui renvoie une partie d'une chaîne, à compter du caractère indiqué en argument. Pour plus d'informations, consulter la documentation de l'API.

 

4. Autres classes

Il existe d'autres classes de base, comme celles définies dans les packages java.util, par exemple Vector et Hashtable ou java.lang. Un vecteur est un tableau à taille variable, contenant un certain nombre d'objets. Une hashtable est une table où l'on associe une clé (valeur unique) à une valeur. Dans une telle table, on peut rechercher une valeur très rapidement. Le package java.util contient également une classe Date, spécialisée dans l'expression et l'utilisation d'une date dans un programme.

Concernant le package java.lang, on y trouve des fonctions mathématiques (classe Math) ou encore une classe statique appelée System, qui est fréquemment utilisée notamment pour l'affichage de texte à l'écran (System.out.println("texte")) ou pour recopier un tableau dans un autre (arraycopy).

Dans le chapitre suivant, nous allons présenter un peu plus en détail une classe du package java.lang permettant de créer des threads.