n Représentation 1: sous forme d’un tableau de char.
o Chaque caractère est placé dans une case du tableau
o sans utiliser de caractères spéciaux comme le '\0'
☻Inconvénients: pas de possibilité d'utiliser des méthodes de manipulation standard de chaînes.
⇒Représentation rarement utilisée
n Représentation 2 : en tant qu’objet de la classe String
17
Exemple:
class TableauChar
{
public static void main(String[ ] arg)
{
char[ ] tableau; tableau = new char[4]; tableau[0] = 'J';
tableau[1] = 'A';
tableau[2] = 'V';
tableau[3] = 'A'; System.out.println(tableau); //affiche : JAVA
}
}
18
1.1. La classe String
n JAVA offre dans sa librairie (API) la classe String, très riche en fonctionnalités
n La classe String offre des objets constants de chaînes.
⇔ Sert à manipuler des chaînes de caractère non modifiables
n 
Déclaration :
//Une 1ère Déclaration possible
String prenom = new String("Pierre");
n Vu son utilisation intensive
//Une 2ère Déclaration très utilisée
String prenom = "Pierre";
19
n Un objet String est constant:
o une fois défini, sa valeur ne peut être modifiée.
o En revanche, on peut lui attribuer une nouvelle chaîne de caractères.
String msg = "Bonjour!";
//on peut ensuite lui affecter une autre chaîne
msg = "nouveau msg";
⇒ la chaîne "Bonjour!" est oubliée et l’objet msg pointe sur une autre chaîne
20
n Concaténation de chaînes:
o 1er cas : utiliser la méthode concat
String s3 = s1.concat(s2);
o 2ème cas : utiliser le signe d'addition + pour effectuer une concaténation :
String mot = message + " et " + "puis s'en vont";
o 3ème cas : utiliser le symbole +=
String mot += s1 ;
21
class TestString {
public static void main(String [] args)
{ //création et initialisation String ch1,ch2, ch3; ch1="Programmation"; ch2=ch1;
System.out.println("ch1: " +ch1);//Programmation System.out.println("ch2: " +ch2);//Programmation
//Concaténation
ch1+=" en JAVA"; //Création d'un nouvel objet
System.out.println("ch1: " +ch1);//Programmation en JAVA
System.out.println("ch2: " +ch2);//Programmation
Scanner s = new Scanner (System.in);
ch3 = s.nextLine (); //encore un nouvel objet
} 22
n Comparaison de chaînes:
o L’instruction :
if (str1 == str2) ... //pas d’erreur
⇒ Ne compare pas si les deux chaînes sont égales, mais si str1 et str2 pointent vers le même objet.
23
n Une comparaison de contenus de chaînes :
if (str1.equals(str2)) ...
n ou encore: str1.compareTo(str2);
CompareTo retourne la valeur :
- 
0 si les deux chaînes sont égales,
- < 0 si str1 < str2,
- >0 si str2 < str1.
24
n Remarques :
o La méthode equalsIgnoreCase a le même rôle que
equals
mais sans tenir compte de la différence de casse (maj. et miniscule)
oL’utilisation des opérateurs >, >=, <, <= est interdite
n Longueur d’une chaîne: length()
Par exemple, msg.length() .
n Accès à un caractère de la chaîne: charAt(index)
⇒retourne le caractère spécifié de la chaîne spécifiée.
Par exemple, msg.charAt(1) .
Remarque : Le paramètre index peut avoir une valeur comprise entre 0 et msg.length() - 1.
n Conversions diverses
o Bien que le contenu d'une chaîne ne puisse pas être modifié, il est possible d'effectuer des conversions en créant une nouvelle chaîne.
n Les méthodes toLowerCase et toUpperCase permettent d'obtenir une chaîne respectivement en minuscules et en majuscules.
n
La méthode trim permet d'obtenir une nouvelle chaîne sans espaces au début ou à la fin.
n
La méthode replace(oldChar, newChar) permet de remplacer tous les caractères oldChar d'une chaîne par des caractères newChar.
n Conversion de caractères, tableaux, entier, etc. vers
chaîne de caractères
n valueOf : permet de convertir un caractère, un tableau de caractères et des valeurs numériques en chaînes de caractères.
n Ces méthodes ont le même nom, mais se différencient par le type de paramètre qui leur est fourni (char, char[], double, long, int, float, etc.)
String valueOf(boolean b) String valueOf(char c) String valueOf(char[] data) String valueOf(double d) String valueOf(float f) String valueOf(int i)
StringvalueOf(long l) 28
public class Test{
public static void main(String args[])
{ double d = 102939939.939; boolean b = true;
long l = 1232874;
char[]arr ={'a', 'b', 'c', 'd', 'e‘,'f','g' }; System.out.println("Val:"+ String.valueOf(d) ); System.out.println("Val: " + String.valueOf(b) );
System.out.println("Val: " + String.valueOf(l) );
System.out.println("Val: " + String.valueOf(arr));
} }
Autres méthodes offertes
o int indexOf(char ch) : retourne l'indice de la première occurrence de ch (considéré comme un caractère) dans la chaîne (ou –1)
o int indexOf(String str) : retourne l'indice du premier caractère de la première occurrence de str dans la chaîne (ou –1)
1.2. La classe StringBuffer
n Offre des objets chaînes modifiables : contenu modifiable
o Plus flexible que le type string
n Les opérateur + (et +=) sont interdits avec les objets de cette classe
n Création : 3 constructeurs possibles:
o public StringBuffer() : une chaîne vide de taille 16 car
o public StringBuffer(int longueur) : une chaîne vide d'une capacité indiquée par longueur.
o public StringBuffer(String str) : une chaîne recevant le paramètre str. La capacité de la chaîne est 16 plus la longueur de str.
n Autres fonctionnalités offertes par la classe StringBuffer :
o int length() : retourne la longueur de la chaîne
o void setlenght (int newLong) : permet de spécifier la longueur d'un StringBuffer.
o int capacity() : retourne la taille du tableau associé
o StringBuffer append(char c) : ajoute le caractère c à la fin de la chaîne
o StringBuffer append(String str) : ajoute le contenu de l'objet str
à la fin de la chaîne
o StringBuffer append(char str[]) : ajoute le contenu du tableau str
à la fin de la chaîne
o StringBuffer insert(int i, char c) : insère le caractère c à la position i de la chaîne
o StringBuffer insert(int i, String str) : insère le contenu de l'objet
str à la position i de la chaîne
o StringBuffer reverse() : inverse la chaîne
n Remarque :
La méthode append cache plusieurs méthodes du même nom permettant d'ajouter des expressions de type char, char[ ], double, float, int, long, et String.
n Exemple:
StringBuffer st = new StringBuffer(); st.append("Cours");
st.append(" ");
st.append("de ");
st.append("Java .");
st.insert(9, "HTML et ");
Þ Un StringBuffer évolue dynamiquement.
Þ Si on augmente la longueur de son contenu, l'espace mémoire alloué est automatiquement augmenté.