Chaînes de caractères
Objectifs du chapitre
Le premier objectif de ce chapitre est de découvrir et d’utiliser quelques classes de l’API Java, spécialisées dans le traitement des caractères et des chaînes de caractères. L’exemple de cours, très succinct, montre l’utilisation de deux d’entre elles : les classes String et StringBuffer.
Le second objectif est l’utilisation de la documentation des API Java. Le travail pratique demande une recherche dans cette documentation.
Classes de traitement des chaînes de caractères
1. String et StringBuffer
Nous avons déjà rencontré la classe String. Java possède aussi une classe StringBuffer. À peu de choses près, les deux classes proposent des méthodes qui permettent les mêmes traitements.
La différence essentielle est que toute modification d’un objet String provoque l’allocation d’un nouvel objet (le garbage collector se chargeant de l’ancien).
2. Programme de test
Cet exemple effectue une concaténation de chaînes, en utilisant successivement un objet String et un objet StringBuffer.
Pour un objet de type String, la concaténation est obtenue par l’appel de la méthode concat() ou par l’utilisation de par l’opérateur + :
String s = "hirondelle";
s = s.concat(" de");
s = s + " cheminée";
Pour un objet de type StringBuffer, la concaténation est obtenue par l’appel de la méthode append() :
StringBuffer sb = new StringBuffer("Hirondelle");
sb.append(" de cheminée");
Voici le code du programme :
public class TestStringStringBuffer
{
public static void main(String argv[])
{
// ---------------------------------------------------------------------
// String
// --------------------------------------------------------------------- ...
Travail pratique : String et StringBuffer
1. Objectifs
Écrire quelques algorithmes de gestion de chaînes de caractères.
Chercher dans la documentation des API Java les méthodes appropriées.
2. Sujet
À partir de la chaîne suivante : "J’utilise JAVA avec brio !"
1. |
Transformer les minuscules en majuscules et réciproquement. |
2. |
Remplacer les espaces par des _ (underscore). |
3. |
Remplacer JAVA par C++. |
4. |
Écrire la chaîne en inversé (ex. ABC --> CBA). |
5. |
Compter combien de fois chaque lettre est utilisée. |
Pour réaliser cet exercice, il est nécessaire d’examiner les nombreuses méthodes des classes String et StringBuffer. Au cours de la recherche, il est possible de repérer d’autres classes de gestion de caractères...
3. String et StringBuffer, proposition de correction
a. Recherche de documentation dans la Javadoc
La documentation de la classe (ici, String) est dans la partie droite de l’écran ci-dessus. On y trouve :
-
Le nom de la classe.
-
La hiérarchie des classes dont elle hérite (comme toutes les classes, la classe String hérite de la classe Object).
-
Une description, parfois très détaillée, de ce que représente la classe, des méthodes qu’elle contient, des exemples...
Il est intéressant de lire la description, même rapidement. Non seulement on comprend mieux ce que l’on fait, mais on peut y rencontrer des pistes de classes intéressantes, liées au problème que l’on étudie.
Exemple
Dans la dernière ligne de l’extrait de la description de la classe String ci-dessus apparaît la classe Character. Son nom suggère qu’un objet de cette classe correspond à un seul caractère. Pour les traitements qui concernent un caractère d’une chaîne de caractères, il peut être intéressant de regarder les méthodes que propose la classe Character.
La documentation présente ensuite les propriétés publiques (en général des constantes).
Puis il y a la liste des constructeurs.
La documentation présente enfin les méthodes :
Les méthodes peuvent être très nombreuses, ce qui rend la recherche difficile. Il est donc important de préciser...