Vous êtes sur la page 1sur 18

Cour de la programmation en JAVA

De l’école supérieure de technologie de Guelmim


Université Ibn Zohr

Programmation Orientée Objet

Chap 5- Les chaînes de caractères


Rappel: Le type char
 Le type char contient exactement 1 caractère.
 le caractère s’écrit entre guillemets simples:

char c1 = 'm';
char c2 = 'M';
char c3 = ' '; // espace
char c4 = '2';

2
SEDKI A.
String : Déclaration d’une chaîne de caractères
 Une chaînes de caractères (suite de caractères ) en Java
est définie par le type String.
 c’est une classe.

...
String nom; //déclaration
...
//déclaration avec initialisation
String message ="Bonjour tout le monde";
...

3
SEDKI A.
Types de base et types évolués (classes)
 Toute variable de type de base stocke directement
une valeur :

 Toute variable de type évolué , comme les tableaux ou


les chaînes de caractères (String), stocke une référence
(adresse) vers une valeur :

4
SEDKI A.
String : les opérateurs = et ==
 Comme pour les tableaux, une variable de type String contient
une référence vers une chaîne de caractères. La sémantique des
opérateurs = et == est donc la même que pour les tableaux :

String chaine1 = " "; // chaine pointe vers " "


String chaine2 = "java"; // chaine2 pointe vers "java"
chaine1 = chaine2 ; // chaine1 et chaine2 pointent vers "java"
if (chaine1 == chaine2) // true
……….

5
SEDKI A.
String : Affichage
 Qu’affiche le code suivant ?
String chaine = "Bonjour";
System.out.print(chaine);

 Puisque la variable chaine contient une référence vers la zone


mémoire contenant la chaîne " Bonjour ", il est raisonnable de
penser que ce code affiche une adresse (comme pour les
tableaux de manière générale) : mais ce n’est pas le cas !

 Ce code affichera: Bonjour

 Pour les String, l’affichage est défini de sorte à prendre en


compte l’objet référencé plutôt que la référence elle-même
 C’est une exception!
6
SEDKI A.
String : Lecture
Scanner clavier = new Scanner(System.in);
System.out.println(" Entrez une chaine " );
String ch = clavier.nextLine();
System.out.println("Vous avez saisi : " + ch);

 Après l'exécution, ch contient tous les caractères tapés


par l'utilisateur, jusqu'à l'appui de return.

7
SEDKI A.
Concaténation de chaines
 La concaténation de chaînes est effectuée par l’opérateur +.
String prenom ="Albert";
String nom ="Einstein";
String nom_complet;
nom_complet = prenom + " " + nom;
System.out.print("Vous vous appelez " + nom_complet + ".");

 De même la concaténation String + char permet l’ajout d’un


caractère en début ou à la fin de chaîne :
String reponse ="solution";
...
les types primitifs
if (n > 1) { sont traduits
reponse = reponse + 's'; automatiquement
} en String
SEDKI A. ...
8
String : Égalité
 Les opérateur == et != appliqué à deux objets compare les
références (adresses) de ces objets.
 Pour comparer les contenus référencés (les valeurs) , on utilise
la méthode equals :
 chaine1.equals(chaine2) teste si les contenus de chaine1 et
chaine2 sont identiques

String s1 = "abc";
String s2 = "aBc";
String s3 = s1 + "";
System.out.println(s1.equals(s2)); // false
System.out.println(s1.equals(s3)); // true

 equalsIgnoreCase() ignore la casse des lettres.


9
SEDKI A.
String : Comparaison
 chaine1. compareTo(chaine2) :
renvoie un entier:
 0 en cas d’égalité de chaine1 et de chaine2,
 positif si chaine1 suit chaine2 dans l’ordre Lexicographique
 négatif sinon

String s1 = "abc";
String s2 = "xyz";
String s3 = s1 + "";
System.out.println(s1. compareTo(s2)); //entier négatif

 s1.compareToIgnoreCase(s2) ignore la casse des lettres.


10
SEDKI A.
String : Méthodes spécifiques
 chaine.length() donne la taille (c’est-à-dire le nombre de
caractères) de chaine.
 Attention ! il y a une paire de parenthèses ; différent des tableaux !

L’instruction chaine.charAt(index) donne le caractère de l’indice


index dans la String chaine.

 L’instruction chaine.indexOf(caractere) donne la première


position du char caractere dans la String chaine, et -1 si
caractere n’est pas dans chaine.

String s = "abcdbx";
int longueur = s.length(); // 6
char c1 = s.charAt(0); // a
char c2 = s.charAt(longueur - 1); // x
int i = s.indexOf('b'); // 1
11
SEDKI A.
Exercice
 Qu’affichera le programme suivant :

String essai = "essai";


String test = "";
for (int i = 1; i <= 3; ++i)
{
test = test + essai.charAt(6-2*i);
test = essai.charAt(i) + test;
}
System.out.println(test);

 Ecrire un programme qui lit une chaîne au clavier et l’affiche


verticalement (c-à-d à raison d’un caractère par ligne )

12
SEDKI A.
Pas de nextChar() dans la classe Scanner !
 Pour lire un caractère (char) avec la classe Scanner, il faut faire :

// Lire la ligne qui contient un caractère


Scanner clavier = new Scanner(System.in);
String chaine = clavier.nextLine();
// Prendre comme caractère le premier élément de la String
char c = chaine.charAt(0);

13
SEDKI A.
String : Modification de chaînes
 la classe String dispose aussi de quelques méthodes qui
produisent toujours une nouvelle chaîne de caractères par
modification d’une autre:
 Ils s’utilisent en fait toutes avec la syntaxe particulière
suivante :
nouvelleChaine = nomChaine.nomMethode(arg1, arg2 ...);

14
SEDKI A.
replace
 chaine.replace(char1, char2) : construit une nouvelle chaîne
valant chaine où char1 est remplacé par char2.

String exemple = "abacadae";


String avecEtoiles = exemple.replace(‘a’, ’*’);

 construit la nouvelle chaîne " *b*c*d*e ".


La variable exemple contint toujours " abacadae ".

15
SEDKI A.
substring
 chaine.substring(position1, position2) :
 donne la sous-chaîne comprise entres les indices de
position1 (compris) et position2 (non-compris)

String exemple = "anticonstitutionnel";


String racineMot = exemple.substring(4,16);

 construit la nouvelle chaîne "constitution".

16
SEDKI A.
Pool de string
String a = "Hello" ;
 La spécification de Java impose que Les littéraux de
type String occupent une zone mémoire unique appelée
pool de string (pour économiser de mémoire!)

String b = "Hello" ;
System.out.print(a==b); //true
 "Hello" cette valeur existe dans la String pool, donc
b va pointer vers cette dernière:

17
SEDKI A.
Pool de string
String a = "Hello" ;
String b = "Hello" ;
System.out.print(a==b); //true
 java crée un seul objet String : "Hello" (référencé par
les 2 variables a et b).

String c = new String("Hello");

 new force la création d’une nouvelle chaîne "Hello".

18
SEDKI A.

Vous aimerez peut-être aussi