SlideShare une entreprise Scribd logo
Aziz DAROUICHI
FST-UCA
Mail to: pr.azizdarouichi@gmail.com
1
Programmation Orientée Objet
(Java 15)
2
Types Fondamentaux: Chaînes de caractères
es de caractère
Chaines de caractères
Manipulation des chaines de caractère
Concaténation
Conversion
Méthodes prédéfinies
Comparaison des String
Formatage des String
Classe StringBuffer
Opérations sur les StringBuffer
Conversion String/StringBuffer
Classe StringBuilder
String/StringBuffer/StringBuilder
es de caractère
Chaines de caractères
Manipulation des chaines de caractère
Concaténation
Conversion
Méthodes prédéfinies
Comparaison des String
Formatage des String
Classe StringBuffer
Opérations sur les StringBuffer
Conversion String/StringBuffer
Classe StringBuilder
String/StringBuffer/StringBuilder
3
Chaînes de caractères (le type String)
4
Syntaxe
La syntaxe de déclaration d’une chaine de caractères est la suivante:
String identificateur;
Exemple:
String nom; //déclare que nom est destinée à contenir une référence à un
objet de type String.
String message=“Salam tout le monde“;
Chaînes de caractères
5
Chaînes de caractères
Construction d'un objet de type String
On peut construire un objet String de plusieurs façons :
Exemple :
String str1 = "Salam le monde !" ;
String str11 = "Salam le monde !";
String str2 = new String("Salam le monde !") ;
String str3 = new String(" ") ;
char data[] = {'a', 'b', 'c'};
String str = new String(data); //équivalent à String str = "abc";
6
Chaînes de caractères
Objets String Immuables
7
Chaînes de caractères
Un objet de type String n’est pas modifiable
Un objet de type String n’est pas modifiable. Il n’existera donc aucune
méthode permettant d’en modifier la valeur.
Considérons ces instructions :
String ch1, ch2, ch;
ch1 = "bonjour";
ch2 = "bonsoir";
1) Après leur exécution?
2) Exécutons maintenant ces instructions :
ch = ch1;
ch1 = ch2;
ch2 = ch;
Que remarquez-vous?
8
Concaténation
L’opérateur «+» enchaîne deux String
String s1 = "Le langage ";
System.out.println(s1 + "Java");
-> Le langage Java
String text = "Hello" + " world”;
text = text + " number " + 5;
-> Hello world number 5
Chaînes de caractères
8
9
Méthode concat()
public class MethodesChaines5{
public static void main (String [] args){
String ch1 = "Bonjour";
String ch2 = "Java";
String ch1PlusCh2 = chaine1.concat(chaine2);
String ch2PlusCh1 = chaine2.concat(chaine1);
System.out.println("La concaténation de bonjour et java donne " + ch1PlusCh2);
System.out.println("La concaténation de java et bonjour donne " + ch2PlusCh1);
}
}
Output:
Concaténation
10
Conversions des opérandes de l’opérateur +
Exemple :
int n = 15 ;
String titre = "résultat : " ;
String monnaie = "$"
String result = titre + n + " " + monnaie ;
System.out.println (result); // affichera : résultat : 15 $
Chaînes de caractères
11
L’opérateur +=
Exemples :
1)
String ch = "Bonjour" ;
ch += " Monsieur"; // ch désigne la chaine "Bonjour Monsieur"
2)
String ch = "chiffres = " ;
for (int i = 0 ; i<=9 ; i++)
ch += i ;
System.out.println (ch); // affiche : chiffres = 0123456789
Chaînes de caractères
12
Conversion
Différentes méthodes permettent de convertir des valeurs de types
primitifs en objets de type String et inversement.
Ces méthodes se trouvent soit dans la classe String, soit dans les
classes Wrapper associées aux types primitifs.
Chaînes de caractères
13
Conversion d’un type primitif en une chaîne
Dans la classe String, la méthode statique valueOf() est surdéfinie
avec un argument des différents types primitifs, à savoir, boolean,
char, int, long, double, float.
Exemple:
Pour le type int :
int n = 135 ;
String ch = String.valueOf(n); // fournit une chaine obtenue par formatage
// de la valeur contenue dans n, soit ici "135 "
Pour le type double :
double x = -23.12 ;
String ch = String.valueOf(x); // fournit une chaine obtenue par formatage
// de la valeur contenue dans x, soit ici "-23.12 "
Conversion
14
Conversion d’un type primitif en une chaîne
Remarque:
Comme les types primitifs disposent de classes enveloppes (par
exemple Integer pour int), on peut en fait montrer que, par exemple,
l’expression :
String.valueOf(n);
est équivalente à :
Integer(n).toString();
Conversion
15
Conversion d’un type primitif en une chaîne
En général:
Méthode Description
Static String valueOf(boolean b) Renvoie la représentation de chaîne de l'argument
booléen.
Static String valueOf(char c) Renvoie la représentation de chaîne de l'argument
char.
Static String valueOf(double d) Renvoie la représentation de chaîne de l'argument
double.
Static String valueOf(float f) Renvoie la représentation de chaîne de l'argument
float.
Static String valueOf(char[] tab) Renvoie la représentation de chaîne de l'argument
tableau de char.
Static String valueOf(Object obj) Renvoie la représentation de chaîne de l'argument
de type objet.
Conversion
16
Conversions d’une chaîne en un type primitif
On peut réaliser les conversions inverses des précédentes. Il faut
alors recourir à une méthode de la classe enveloppe associée au type
primitif : Integer pour int ou Float pour float.
Exemple:
String ch = "1234" ;
int n = Integer.parseInt(ch);
Conversion
17
Conversions d’une chaîne en un type primitif
En général:
On dispose des méthodes suivantes :
Byte.parseByte(),
Short.parseShort(),
Integer.parseInt(),
Long.parseLong(),
Float.parseFloat(),
Double.parseDouble().
Conversion
18
Dans les libraires de base, il existe souvent plusieurs méthodes
pour effectuer un même type de conversion.
Conversion
19
Exemple
Conversion
20
Chaînes de caractères
La méthode length() permet d’obtenir la longueur d’une chaîne.
String nom; // déclaration
nom = "Mohammed"; // affectation
String nom2 = "Omar"; //déclaration & affectation
unAutre = ""; // String vide
Méthode length() donne nb. de caractères
System.out.println(nom.length());
-> 8
System.out.println(unAutre.length());
-> 0
Méthode Length()
20
21
Méthode charAt()
La méthode charAt() permet de retrouver le caractère situé à la
position n d’une chaine.
Exemple
String ch = "Salam" ;
ch.charAt(0) correspond au caractère ’S’,
ch.charAt(2) correspond au caractère ’l’.
21
Chaînes de caractères
22
Extraction d’une sous-chaîne: substring()
Extraire tous les caractères depuis une position donnée:
substring(posdonnee) extrait une sous-chaine
String ch = "The paradise";
String ch1 = ch.substring(4);
System.out.println("Morocco is " + ch1);
-> Morocco is paradise
Modification de chaînes de caractères
22
23
Extraction d’une sous-chaîne: substring()
Extraire tous les caractères compris entre deux positions données
(la première incluse, la seconde exclue) :
substring(debut, fin) extrait une sous-chaine
String salut = "Be in this world like a stranger!";
String antiSalut = salut.substring(0, 16);
System.out.println(antiSalut);
-> Be in this world
debut est le premier caractère à prendre (la première position
inclue)
fin est le deuxième caractère à pas prendre en compte (la deuxième
exclue)
23
Modification de chaînes de caractères
24
La méthode substring()
String str = salut.substring(0, 4); //Be i
Premier élément du String est l’élément 0
Dernier élément du String est length()- 1
substring.length() == fin - debut
B e i n t h i s w
0 1 2 3 4 5 6 7 8 9 10 11
debut
Fin
24
Modification de chaînes de caractères
25
String
Opérateurs
s.length() Longueur de s
s.substring(i, j) Sous-chaîne de s de pos. i à j-1
s.toUpperCase() s toute en majuscules
s.toLowerCase() s toute en minuscules
"" + x Le nombre x en caractères
Double.parseDouble(s) double représenté par s
Integer.parseInt(s) int représenté par s
25
Modification de chaînes de caractères
26
Remplacement de caractères
La méthode replace(char oldChar, char newChar) crée une chaîne
en remplaçant toutes les occurrences d’un caractère donné par un
autre.
Exemple
String ch = "bonjour" ;
String ch1 = ch.replace(’o’, ’a’) ; // ch n’est pas modifiée
// ch1 contient "banjaur"
26
Modification de chaînes de caractères
27
Passage en majuscules/minuscules
La méthode toLowerCase() (resp. toUpperCase()) crée une nouvelle
chaîne en remplaçant toutes les majuscules (resp. minuscules) par
leur équivalent en minuscules (resp. majuscules), lorsque celui-ci
existe.
Exemple
String ch = "LanGaGE Java_8" ;
String ch1 = ch.toLowerCase() ; // ch est inchangée
// ch1 contient "langage java_8"
String ch2 = ch.toUpperCase() ; // ch n’est pas modifiée
// ch2 contient "LANGAGE JAVA_8"
27
Modification de chaînes de caractères
28
Suppression des séparateurs de début et de fin
La méthode trim() crée une nouvelle chaîne en supprimant les
éventuels séparateurs de début et de fin (espace, tabulations, fin de
ligne).
Exemple
String ch = " ntdes séparateurs avant, pendanttn et après nt " ;
String ch1 = ch.trim();
// ch n’est pas modifiée, ch1 contient la chaine :
//"des séparateurs avant, pendanttn et après"
28
Modification de chaînes de caractères
29
Recherche dans une chaîne
La méthode indexOf() surdéfinie dans la classe String permet de
rechercher, à partir du début d’une chaîne ou d’une position donnée :
la première occurrence d’un caractère donné,
la première occurrence d’une autre chaîne.
Dans tous les cas, elle fournit :
la position du caractère (ou du début de la chaîne recherchée) si une
correspondance a effectivement été trouvée,
La valeur -1 sinon.
Par contre la méthode lastIndexOf(), surdéfinie pour effectuer les
mêmes recherches que indexOf(), mais en examinant la chaîne depuis
sa fin.
Chaînes de caractères
29
30
Exemple
String mot = "anticonstitutionnellement" ;
int n ;
n = mot.indexOf (’t’) ; // n vaut 2
n = mot.lastIndexOf (’t’) ; // n vaut 24
n = mot.indexOf ("ti") ; // n vaut 2
n = mot.lastIndexOf ("ti") ; // n vaut 12
n = mot.indexOf (’x’) ; // n vaut -1
n = mot.indexOf (’t’,3) ; // n vaut 8
30
Recherche dans une chaîne
31
Exemples
Chaînes de caractères
31
32
Méthode contains()
Chaînes de caractères
32
La méthode contains() permet de tester si une chaîne de caractères
contient une autre chaine de caractères.
La méthode retourne true si et seulement si la chaîne contient la
chaîne de caractères passée en paramètre, false sinon.
La syntaxe de cette méthode est:
public boolean contains(String s)
33
Méthode contains()
33
Exemple:
String str= "Langage Java";
String cs = "Java";
boolean retval = str.contains(cs);
System.out.println("Méthode retourne : " + retval); // retval =true
34
Méthode isEmpty()
34
La méthode isEmpty() permet de vérifier si une chaîne de caractères
est vide ou pas.
La méthode retourne true si et seulement si la longueur de la chaîne
de caractères vaut 0, false sinon.
La syntaxe de cette méthode est:
public boolean isEmpty()
Chaînes de caractères
35
Méthode isEmpty()
35
Exemple:
String s1= "Langage Java 15";
String s2 = "";
System.out.println(s1.isEmpty());
System.out.println(s2.isEmpty());
Output:
false
true
36
Méthode toCharArray()
Chaînes et tableaux de caractères
36
Une string n'est pas un tableau de char mais on peut passer de l'un à
l'autre.
La méthode toCharArray() permet de convertir une chaîne de
caractères en tableau de caractères.
Exemple:
String str= "JavaFx";
char[] tabChar=str.toCharArray(); //tabChar= { ‘J', 'a', 'v', 'a', 'F', 'x' };
37
Méthode getChars()
Chaînes et tableaux de caractères
37
La méthode getChars() permet de copier le contenu d’une chaîne de
caractères en tableau de caractères.
Il y a 4 arguments passés dans la méthode getChars().
La syntaxe de la méthode getChars() est:
public void getChars(int srcBeginIndex, int srcEndIndex, char[] destination,
int dstBeginIndex)
38
Méthode getChars()
38
Exemple:
String str = new String("Hello Java 15 from FSTG");
char[] ch = new char[10];
str.getChars(6, 13, ch, 0);
System.out.println(ch);
Output:
Java 15
Chaînes et tableaux de caractères
39
Java - Regular Expressions (java.util.regex)
Expressions régulières
39
L'expression régulière (regex) est une séquence spéciale de
caractères qui vous aide à lier ou trouver d'autres chaînes ou des
ensembles de chaînes, en utilisant une syntaxe particulière retenue
dans un pattern (motif).
Ils peuvent être utilisés pour rechercher, éditer ou manipuler du
texte et des données.
Les expressions régulières permettent de définir un pattern (motif)
objet de la classe Pattern.
Un pattern (motif) est créé par la méthode compile
Pattern pat = Pattern.compile("[a-z]*")
40
40
La syntaxe des expressions régulières est assez large:
Expression régulière Description
^ Relie que ce doit être au début d’une ligne.
$ Relie que ce doit être la fin d’une ligne.
. Un caractère et un seul
[liste] Un des caractères entre crochets
[^liste] Un caractère n'étant pas entre crochets
expr* Ce quantificateur correspond à ce qui le précède, répété zéro ou plusieurs
fois
expr? Ce quantificateur correspond à ce qui le précède, présent zéro ou une fois
expr+ Ce quantificateur correspond à ce qui le précède, répété une ou plusieurs fois
expr{n} Exactement n occurrences de l'expression précédant les accolades
expr{n,m} Entre n et m occurrences de l'expression précédant les accolades
expr{n,} Au moins n occurrences de l'expression précédant les accolades
Syntaxe d’expressions régulières
41
41
La syntaxe des expressions régulières est assez large: (suite)
Expression régulière Description
w un caractère lettre ou chiffre
W un caractère ni lettre, ni chiffre
s un caractère espace
S un caractère non espace
d un chiffre ; équivaut à [0-9]
D un caractère non-chiffre
A le début d’un string
Z la fin d’un string. Si un newline existe, il relie juste avant
newline.
z la fin d’un string
n, t, r etc. saut de ligne, tabulation horizontale, retour chariot etc.
…
Syntaxe d’expressions régulières
42
Méthode split()
Chaînes de caractères
42
La méthode split() permet de découper une chaîne de caractères
sur la base d’un séparateur qui est exprimé sous la forme d’une
expression régulière (regex).
La méthode retourne le résultat dans un tableau de String qui
contient les fragements découpés.
La syntaxe à utiliser pour les expressions régulières est définie
dans la classe Pattern (java.util.regex)
43
Méthode split()
43
Deux syntaxes de la méthode split() :
public String split(String regex)
public String split(String regex, int limit)
regex : expression régulière qui va s’appliquer au string.
limit : le nombre de chaînes dans le tableau. Si c’est nul, il renverra
toutes les chaînes correspondant au regex.
Elles renvoient un tableau de String.
44
Exemple
44
Méthode split()
45
Méthode join()
Chaînes de caractères
45
La méthode join() permet de joindre une chaîne de caractères avec
un délimiteur donné.
Dans la méthode join(), le délimiteur est copié pour chaque
élément.
Dans le cas d'un élément nul, "null" est ajouté.
La méthode join() est incluse dans java string depuis JDK 1.8.
46
Méthode join()
46
Une syntaxe de cette méthode est la suivante:
public static String join(CharSequence delimiter, CharSequence... elements)
delimiter : Valeur de char à ajouter avec chaque élément
elements : Valeur de char à joindre avec délimiteur
La méthode join() renvoie une chaîne jointe avec le délimiteur.
47
47
Exemple
String joinSt1=String.join("-","Bienvenue","à","la FSTG");
System.out.println(joinStr1);
Output:
Bienvenue-à-la FSTG
Méthode join()
48
Mise en Forme
Caractères spéciaux
Ils sont équivalents:
System.out.println("Salam tout le monde");
System.out.print("Salam tout le monden");
n à la ligne
t tab
Chaînes de caractères
48
49
Comparaisons de chaînes de caractères
49
50
L’opérateur ==
1) String ch1 = "Bonjour" ;
String ch2 = "Bonjour" ;
if (ch1 == ch2) System.out.println ("égales") ;
else System.out.println ("différentes") ;
2) String ch1 = "Bonjour" ;
String ch2 = "Bon" ;
ch2 += "jour" ;
if (ch1 == ch2) System.out.println ("égales") ;
else System.out.println ("différentes") ;
Comparaisons de chaînes de caractères
50
51
La méthode equals()
La méthode equals() compare le contenu de deux chaînes :
String nom = "Fred";
if (nom.equals("Frod")) {
System.out.println("Alors, Frod est Fred…");
}
C’est la méthode equals() appliquée à une variable de type
String
Caractère par caractère :
F r e d
F r o d
false
51
Comparaisons de chaînes de caractères
52
La méthode equalsIgnoreCase()
La méthode equalsIgnoreCase() compare le contenu de deux chaînes,
mais sans distinguer les majuscules des minuscules:
String nom = "Salam";
if (nom.equals("salam")) {
System.out.println("Alors, c’est l’égalité…");
}
S a l a m
s a l a m
true
52
Comparaisons de chaînes de caractères
La méthode compareTo()
La méthode compareTo() s’utilise ainsi :
chaîne1.compareTo(chaîne2)
Elle fournit :
un entier négatif si chaîne1 arrive avant chaîne2,
un entier nul si chaîne1 et chaîne2 sont égales (on a alors
chaîne1.equals(chaîne2)),
un entier positif si chaîne1 arrive après chaîne2.
53
Comparaisons de chaînes de caractères
53
Exemple
String s1 = "Bonjour" ;
String s2 = "le monde !" ;
int c = s1.compareTo(s2) ;
System.out.println(c) ;
-> c = -42
c = s2.compareToIgnoreCase(s1) ;
System.out.println(c) ;
-> c = 10 ;
54
compareTo()/compareToIgnoreCase()
54
La méthode startsWith()/endsWith():
Ces deux méthodes renvoient true si la chaîne commence ou se termine
par la chaîne passée en paramètre.
Exemple
String s1 = "Bonjour" ;
boolean b = s1.startsWith("a") ;
System.out.println(b) ;
-> b = false
boolean b = s1.endsWith("r") ;
System.out.println(b) ;
-> b = true
55
Comparaisons de chaînes de caractères
55
Méthode format()
56
Formatage de chaînes de caractères
56
Méthode printf()
57
Formatage de chaînes de caractères
57
58
Classe StringBuffer
58
59
59
Classe StringBuffer
60
Opérations sur les StringBuffer
60
Exemple
61
61
String s = "la java" ;
StringBuffer sBuf = new StringBuffer(s); System.out.println(sBuf) ;
sBuf.setCharAt(3, ’J’); System.out.println(sBuf);
sBuf.setCharAt(1, ’e’) ; System.out.println(sBuf);
sBuf.append(" 1119 ") ; System.out.println(sBuf);
sBuf.insert(3, "langage ") ; System.out.println(sBuf);
sBuf.delete(16, 18) ; System.out.println(sBuf); // le premier indice est inclus, le deuxième
exclus.
sBuf.deleteCharAt(16); System.out.println(sBuf);
la java
la Java
le Java
le Java 1119
le langage Java 1119
le langage Java 19
le langage Java 9
Opérations sur les StringBuffer
Exemple
62
62
StringBuffer buff = new StringBuffer("Hello Mum .");
buff.replace(6, 9, "World");
buff.setCharAt(12, '!');
buff.reverse();
System.out.println (buff); // Affiche ! dlroW olleH
Opérations sur les StringBuffer
Conversion String StringBuffer
63
Chaînes de caractères
63
64
Classe StringBuilder
64
Remarque:
Pour plus de détails sur les trois classes String, StringBuilder et
StringBuffer voir les liens suivants:
https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/String.html
https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/StringBuffer.html
https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/StringBuilder.html
65
String/StringBuffer/StringBuilder
65
66
Q & A
67
Références
1. Programmer en Java, Claude Delannoy, Eyrolles, 2016
2. Programmation orientée objet avec Java, Jacques Bapst, École
d’Ingénieurs et d’Architectes de Fribourg.
3. http://blog.paumard.org/cours/java/
4. http://www.tutorialspoint.com/java/
5. https://docs.oracle.com/en/java/javase/15/index.html
6. …

Contenu connexe

PDF
Chapitre 11: Expression Lambda et Référence de méthode en Java
PDF
Chapitre8: Collections et Enumerations En Java
PPSX
Fondamentaux java
PDF
Chap 6 : classes et interfaces
PDF
POO Java Chapitre 1 Classe & Objet
PDF
POO-JAVA-partie-1.pdf
PDF
Chapitre 5 classes abstraites et interfaces
PDF
Correction Examen 2016-2017 POO .pdf
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre8: Collections et Enumerations En Java
Fondamentaux java
Chap 6 : classes et interfaces
POO Java Chapitre 1 Classe & Objet
POO-JAVA-partie-1.pdf
Chapitre 5 classes abstraites et interfaces
Correction Examen 2016-2017 POO .pdf

Tendances (20)

PPT
JAVA Variables and Operators
PDF
Cours design pattern m youssfi partie 1 introduction et pattern strategy
PDF
JDBC: Gestion des bases de données en Java
PPT
Java Basics
PPT
JDBC
PPT
OOP V3.1
PPT
Exception Handling
PDF
Chap1V2019: Cours en C++
PDF
Support Web Services SOAP et RESTful Mr YOUSSFI
PPT
Java Basics V3
PDF
Cours design pattern m youssfi partie 6 proxy
PPT
Collection v3
PDF
Support POO Java première partie
PDF
Tp2 - WS avec JAXRS
PPT
Jsp/Servlet
PPTX
Introduction à Python
PDF
Chapitre5: Classes et objets
PPTX
Les Streams de Java 8
PDF
Architecture jee principe de inversion de controle et injection des dependances
JAVA Variables and Operators
Cours design pattern m youssfi partie 1 introduction et pattern strategy
JDBC: Gestion des bases de données en Java
Java Basics
JDBC
OOP V3.1
Exception Handling
Chap1V2019: Cours en C++
Support Web Services SOAP et RESTful Mr YOUSSFI
Java Basics V3
Cours design pattern m youssfi partie 6 proxy
Collection v3
Support POO Java première partie
Tp2 - WS avec JAXRS
Jsp/Servlet
Introduction à Python
Chapitre5: Classes et objets
Les Streams de Java 8
Architecture jee principe de inversion de controle et injection des dependances
Publicité

Similaire à Chapitre 2: String en Java (20)

PDF
JAVA Chapitre7
PDF
Chapitre 3 elements de base de java
PPTX
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
PPTX
PDF
Les chaines de a à Z, de String à StringTemplate.pdf
PDF
Java1_BasesLangage.pdf
PDF
Java1_BasesLangage.pdf
PPTX
Les chaines de test test test test test caractères.pptx
PPTX
java_partie3jGZDYSDJ.VQZSVCJVJWXCDDS.pptx
PPTX
java_partie3kzjhkzuefb;hbjhbefhbb,nwb.pptx
PPT
Les bases du java
PDF
1Chapitre2_Généralités Java.pptx (1).pdf
PPT
Java PROGRAMATION CLASSE INFORMATIQUE.ppt
PDF
Polycope java enseignant
PDF
JAVA Chapitre6
PDF
Les bases du langage java
PPT
Java uik-chap3-bases java
PDF
Memo java
PDF
2 - Introduction à Java ------------.pdf
PDF
Cours java
JAVA Chapitre7
Chapitre 3 elements de base de java
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Les chaines de a à Z, de String à StringTemplate.pdf
Java1_BasesLangage.pdf
Java1_BasesLangage.pdf
Les chaines de test test test test test caractères.pptx
java_partie3jGZDYSDJ.VQZSVCJVJWXCDDS.pptx
java_partie3kzjhkzuefb;hbjhbefhbb,nwb.pptx
Les bases du java
1Chapitre2_Généralités Java.pptx (1).pdf
Java PROGRAMATION CLASSE INFORMATIQUE.ppt
Polycope java enseignant
JAVA Chapitre6
Les bases du langage java
Java uik-chap3-bases java
Memo java
2 - Introduction à Java ------------.pdf
Cours java
Publicité

Plus de Aziz Darouichi (12)

PDF
Partie3BI-DW-OLAP2019
PDF
Chapitre2fonctionscppv2019
PDF
Chapitre3TableauxEnCppV2019
PDF
Partie2BI-DW2019
PDF
Partie1BI-DW2019
PPTX
Chapitre1: Langage Python
PDF
Chapitre6: Surcharge des opérateurs
PDF
Chapitre4: Pointeurs et références
PPT
Cours Visual Basic.NET
PDF
Chapitre3 tableauxcpp
PDF
Chap2fonctionscpp
PDF
Chap1: Cours en C++
Partie3BI-DW-OLAP2019
Chapitre2fonctionscppv2019
Chapitre3TableauxEnCppV2019
Partie2BI-DW2019
Partie1BI-DW2019
Chapitre1: Langage Python
Chapitre6: Surcharge des opérateurs
Chapitre4: Pointeurs et références
Cours Visual Basic.NET
Chapitre3 tableauxcpp
Chap2fonctionscpp
Chap1: Cours en C++

Chapitre 2: String en Java

  • 1. Aziz DAROUICHI FST-UCA Mail to: pr.azizdarouichi@gmail.com 1 Programmation Orientée Objet (Java 15)
  • 2. 2 Types Fondamentaux: Chaînes de caractères es de caractère Chaines de caractères Manipulation des chaines de caractère Concaténation Conversion Méthodes prédéfinies Comparaison des String Formatage des String Classe StringBuffer Opérations sur les StringBuffer Conversion String/StringBuffer Classe StringBuilder String/StringBuffer/StringBuilder es de caractère Chaines de caractères Manipulation des chaines de caractère Concaténation Conversion Méthodes prédéfinies Comparaison des String Formatage des String Classe StringBuffer Opérations sur les StringBuffer Conversion String/StringBuffer Classe StringBuilder String/StringBuffer/StringBuilder
  • 3. 3 Chaînes de caractères (le type String)
  • 4. 4 Syntaxe La syntaxe de déclaration d’une chaine de caractères est la suivante: String identificateur; Exemple: String nom; //déclare que nom est destinée à contenir une référence à un objet de type String. String message=“Salam tout le monde“; Chaînes de caractères
  • 5. 5 Chaînes de caractères Construction d'un objet de type String On peut construire un objet String de plusieurs façons : Exemple : String str1 = "Salam le monde !" ; String str11 = "Salam le monde !"; String str2 = new String("Salam le monde !") ; String str3 = new String(" ") ; char data[] = {'a', 'b', 'c'}; String str = new String(data); //équivalent à String str = "abc";
  • 7. 7 Chaînes de caractères Un objet de type String n’est pas modifiable Un objet de type String n’est pas modifiable. Il n’existera donc aucune méthode permettant d’en modifier la valeur. Considérons ces instructions : String ch1, ch2, ch; ch1 = "bonjour"; ch2 = "bonsoir"; 1) Après leur exécution? 2) Exécutons maintenant ces instructions : ch = ch1; ch1 = ch2; ch2 = ch; Que remarquez-vous?
  • 8. 8 Concaténation L’opérateur «+» enchaîne deux String String s1 = "Le langage "; System.out.println(s1 + "Java"); -> Le langage Java String text = "Hello" + " world”; text = text + " number " + 5; -> Hello world number 5 Chaînes de caractères 8
  • 9. 9 Méthode concat() public class MethodesChaines5{ public static void main (String [] args){ String ch1 = "Bonjour"; String ch2 = "Java"; String ch1PlusCh2 = chaine1.concat(chaine2); String ch2PlusCh1 = chaine2.concat(chaine1); System.out.println("La concaténation de bonjour et java donne " + ch1PlusCh2); System.out.println("La concaténation de java et bonjour donne " + ch2PlusCh1); } } Output: Concaténation
  • 10. 10 Conversions des opérandes de l’opérateur + Exemple : int n = 15 ; String titre = "résultat : " ; String monnaie = "$" String result = titre + n + " " + monnaie ; System.out.println (result); // affichera : résultat : 15 $ Chaînes de caractères
  • 11. 11 L’opérateur += Exemples : 1) String ch = "Bonjour" ; ch += " Monsieur"; // ch désigne la chaine "Bonjour Monsieur" 2) String ch = "chiffres = " ; for (int i = 0 ; i<=9 ; i++) ch += i ; System.out.println (ch); // affiche : chiffres = 0123456789 Chaînes de caractères
  • 12. 12 Conversion Différentes méthodes permettent de convertir des valeurs de types primitifs en objets de type String et inversement. Ces méthodes se trouvent soit dans la classe String, soit dans les classes Wrapper associées aux types primitifs. Chaînes de caractères
  • 13. 13 Conversion d’un type primitif en une chaîne Dans la classe String, la méthode statique valueOf() est surdéfinie avec un argument des différents types primitifs, à savoir, boolean, char, int, long, double, float. Exemple: Pour le type int : int n = 135 ; String ch = String.valueOf(n); // fournit une chaine obtenue par formatage // de la valeur contenue dans n, soit ici "135 " Pour le type double : double x = -23.12 ; String ch = String.valueOf(x); // fournit une chaine obtenue par formatage // de la valeur contenue dans x, soit ici "-23.12 " Conversion
  • 14. 14 Conversion d’un type primitif en une chaîne Remarque: Comme les types primitifs disposent de classes enveloppes (par exemple Integer pour int), on peut en fait montrer que, par exemple, l’expression : String.valueOf(n); est équivalente à : Integer(n).toString(); Conversion
  • 15. 15 Conversion d’un type primitif en une chaîne En général: Méthode Description Static String valueOf(boolean b) Renvoie la représentation de chaîne de l'argument booléen. Static String valueOf(char c) Renvoie la représentation de chaîne de l'argument char. Static String valueOf(double d) Renvoie la représentation de chaîne de l'argument double. Static String valueOf(float f) Renvoie la représentation de chaîne de l'argument float. Static String valueOf(char[] tab) Renvoie la représentation de chaîne de l'argument tableau de char. Static String valueOf(Object obj) Renvoie la représentation de chaîne de l'argument de type objet. Conversion
  • 16. 16 Conversions d’une chaîne en un type primitif On peut réaliser les conversions inverses des précédentes. Il faut alors recourir à une méthode de la classe enveloppe associée au type primitif : Integer pour int ou Float pour float. Exemple: String ch = "1234" ; int n = Integer.parseInt(ch); Conversion
  • 17. 17 Conversions d’une chaîne en un type primitif En général: On dispose des méthodes suivantes : Byte.parseByte(), Short.parseShort(), Integer.parseInt(), Long.parseLong(), Float.parseFloat(), Double.parseDouble(). Conversion
  • 18. 18 Dans les libraires de base, il existe souvent plusieurs méthodes pour effectuer un même type de conversion. Conversion
  • 20. 20 Chaînes de caractères La méthode length() permet d’obtenir la longueur d’une chaîne. String nom; // déclaration nom = "Mohammed"; // affectation String nom2 = "Omar"; //déclaration & affectation unAutre = ""; // String vide Méthode length() donne nb. de caractères System.out.println(nom.length()); -> 8 System.out.println(unAutre.length()); -> 0 Méthode Length() 20
  • 21. 21 Méthode charAt() La méthode charAt() permet de retrouver le caractère situé à la position n d’une chaine. Exemple String ch = "Salam" ; ch.charAt(0) correspond au caractère ’S’, ch.charAt(2) correspond au caractère ’l’. 21 Chaînes de caractères
  • 22. 22 Extraction d’une sous-chaîne: substring() Extraire tous les caractères depuis une position donnée: substring(posdonnee) extrait une sous-chaine String ch = "The paradise"; String ch1 = ch.substring(4); System.out.println("Morocco is " + ch1); -> Morocco is paradise Modification de chaînes de caractères 22
  • 23. 23 Extraction d’une sous-chaîne: substring() Extraire tous les caractères compris entre deux positions données (la première incluse, la seconde exclue) : substring(debut, fin) extrait une sous-chaine String salut = "Be in this world like a stranger!"; String antiSalut = salut.substring(0, 16); System.out.println(antiSalut); -> Be in this world debut est le premier caractère à prendre (la première position inclue) fin est le deuxième caractère à pas prendre en compte (la deuxième exclue) 23 Modification de chaînes de caractères
  • 24. 24 La méthode substring() String str = salut.substring(0, 4); //Be i Premier élément du String est l’élément 0 Dernier élément du String est length()- 1 substring.length() == fin - debut B e i n t h i s w 0 1 2 3 4 5 6 7 8 9 10 11 debut Fin 24 Modification de chaînes de caractères
  • 25. 25 String Opérateurs s.length() Longueur de s s.substring(i, j) Sous-chaîne de s de pos. i à j-1 s.toUpperCase() s toute en majuscules s.toLowerCase() s toute en minuscules "" + x Le nombre x en caractères Double.parseDouble(s) double représenté par s Integer.parseInt(s) int représenté par s 25 Modification de chaînes de caractères
  • 26. 26 Remplacement de caractères La méthode replace(char oldChar, char newChar) crée une chaîne en remplaçant toutes les occurrences d’un caractère donné par un autre. Exemple String ch = "bonjour" ; String ch1 = ch.replace(’o’, ’a’) ; // ch n’est pas modifiée // ch1 contient "banjaur" 26 Modification de chaînes de caractères
  • 27. 27 Passage en majuscules/minuscules La méthode toLowerCase() (resp. toUpperCase()) crée une nouvelle chaîne en remplaçant toutes les majuscules (resp. minuscules) par leur équivalent en minuscules (resp. majuscules), lorsque celui-ci existe. Exemple String ch = "LanGaGE Java_8" ; String ch1 = ch.toLowerCase() ; // ch est inchangée // ch1 contient "langage java_8" String ch2 = ch.toUpperCase() ; // ch n’est pas modifiée // ch2 contient "LANGAGE JAVA_8" 27 Modification de chaînes de caractères
  • 28. 28 Suppression des séparateurs de début et de fin La méthode trim() crée une nouvelle chaîne en supprimant les éventuels séparateurs de début et de fin (espace, tabulations, fin de ligne). Exemple String ch = " ntdes séparateurs avant, pendanttn et après nt " ; String ch1 = ch.trim(); // ch n’est pas modifiée, ch1 contient la chaine : //"des séparateurs avant, pendanttn et après" 28 Modification de chaînes de caractères
  • 29. 29 Recherche dans une chaîne La méthode indexOf() surdéfinie dans la classe String permet de rechercher, à partir du début d’une chaîne ou d’une position donnée : la première occurrence d’un caractère donné, la première occurrence d’une autre chaîne. Dans tous les cas, elle fournit : la position du caractère (ou du début de la chaîne recherchée) si une correspondance a effectivement été trouvée, La valeur -1 sinon. Par contre la méthode lastIndexOf(), surdéfinie pour effectuer les mêmes recherches que indexOf(), mais en examinant la chaîne depuis sa fin. Chaînes de caractères 29
  • 30. 30 Exemple String mot = "anticonstitutionnellement" ; int n ; n = mot.indexOf (’t’) ; // n vaut 2 n = mot.lastIndexOf (’t’) ; // n vaut 24 n = mot.indexOf ("ti") ; // n vaut 2 n = mot.lastIndexOf ("ti") ; // n vaut 12 n = mot.indexOf (’x’) ; // n vaut -1 n = mot.indexOf (’t’,3) ; // n vaut 8 30 Recherche dans une chaîne
  • 32. 32 Méthode contains() Chaînes de caractères 32 La méthode contains() permet de tester si une chaîne de caractères contient une autre chaine de caractères. La méthode retourne true si et seulement si la chaîne contient la chaîne de caractères passée en paramètre, false sinon. La syntaxe de cette méthode est: public boolean contains(String s)
  • 33. 33 Méthode contains() 33 Exemple: String str= "Langage Java"; String cs = "Java"; boolean retval = str.contains(cs); System.out.println("Méthode retourne : " + retval); // retval =true
  • 34. 34 Méthode isEmpty() 34 La méthode isEmpty() permet de vérifier si une chaîne de caractères est vide ou pas. La méthode retourne true si et seulement si la longueur de la chaîne de caractères vaut 0, false sinon. La syntaxe de cette méthode est: public boolean isEmpty() Chaînes de caractères
  • 35. 35 Méthode isEmpty() 35 Exemple: String s1= "Langage Java 15"; String s2 = ""; System.out.println(s1.isEmpty()); System.out.println(s2.isEmpty()); Output: false true
  • 36. 36 Méthode toCharArray() Chaînes et tableaux de caractères 36 Une string n'est pas un tableau de char mais on peut passer de l'un à l'autre. La méthode toCharArray() permet de convertir une chaîne de caractères en tableau de caractères. Exemple: String str= "JavaFx"; char[] tabChar=str.toCharArray(); //tabChar= { ‘J', 'a', 'v', 'a', 'F', 'x' };
  • 37. 37 Méthode getChars() Chaînes et tableaux de caractères 37 La méthode getChars() permet de copier le contenu d’une chaîne de caractères en tableau de caractères. Il y a 4 arguments passés dans la méthode getChars(). La syntaxe de la méthode getChars() est: public void getChars(int srcBeginIndex, int srcEndIndex, char[] destination, int dstBeginIndex)
  • 38. 38 Méthode getChars() 38 Exemple: String str = new String("Hello Java 15 from FSTG"); char[] ch = new char[10]; str.getChars(6, 13, ch, 0); System.out.println(ch); Output: Java 15 Chaînes et tableaux de caractères
  • 39. 39 Java - Regular Expressions (java.util.regex) Expressions régulières 39 L'expression régulière (regex) est une séquence spéciale de caractères qui vous aide à lier ou trouver d'autres chaînes ou des ensembles de chaînes, en utilisant une syntaxe particulière retenue dans un pattern (motif). Ils peuvent être utilisés pour rechercher, éditer ou manipuler du texte et des données. Les expressions régulières permettent de définir un pattern (motif) objet de la classe Pattern. Un pattern (motif) est créé par la méthode compile Pattern pat = Pattern.compile("[a-z]*")
  • 40. 40 40 La syntaxe des expressions régulières est assez large: Expression régulière Description ^ Relie que ce doit être au début d’une ligne. $ Relie que ce doit être la fin d’une ligne. . Un caractère et un seul [liste] Un des caractères entre crochets [^liste] Un caractère n'étant pas entre crochets expr* Ce quantificateur correspond à ce qui le précède, répété zéro ou plusieurs fois expr? Ce quantificateur correspond à ce qui le précède, présent zéro ou une fois expr+ Ce quantificateur correspond à ce qui le précède, répété une ou plusieurs fois expr{n} Exactement n occurrences de l'expression précédant les accolades expr{n,m} Entre n et m occurrences de l'expression précédant les accolades expr{n,} Au moins n occurrences de l'expression précédant les accolades Syntaxe d’expressions régulières
  • 41. 41 41 La syntaxe des expressions régulières est assez large: (suite) Expression régulière Description w un caractère lettre ou chiffre W un caractère ni lettre, ni chiffre s un caractère espace S un caractère non espace d un chiffre ; équivaut à [0-9] D un caractère non-chiffre A le début d’un string Z la fin d’un string. Si un newline existe, il relie juste avant newline. z la fin d’un string n, t, r etc. saut de ligne, tabulation horizontale, retour chariot etc. … Syntaxe d’expressions régulières
  • 42. 42 Méthode split() Chaînes de caractères 42 La méthode split() permet de découper une chaîne de caractères sur la base d’un séparateur qui est exprimé sous la forme d’une expression régulière (regex). La méthode retourne le résultat dans un tableau de String qui contient les fragements découpés. La syntaxe à utiliser pour les expressions régulières est définie dans la classe Pattern (java.util.regex)
  • 43. 43 Méthode split() 43 Deux syntaxes de la méthode split() : public String split(String regex) public String split(String regex, int limit) regex : expression régulière qui va s’appliquer au string. limit : le nombre de chaînes dans le tableau. Si c’est nul, il renverra toutes les chaînes correspondant au regex. Elles renvoient un tableau de String.
  • 45. 45 Méthode join() Chaînes de caractères 45 La méthode join() permet de joindre une chaîne de caractères avec un délimiteur donné. Dans la méthode join(), le délimiteur est copié pour chaque élément. Dans le cas d'un élément nul, "null" est ajouté. La méthode join() est incluse dans java string depuis JDK 1.8.
  • 46. 46 Méthode join() 46 Une syntaxe de cette méthode est la suivante: public static String join(CharSequence delimiter, CharSequence... elements) delimiter : Valeur de char à ajouter avec chaque élément elements : Valeur de char à joindre avec délimiteur La méthode join() renvoie une chaîne jointe avec le délimiteur.
  • 48. 48 Mise en Forme Caractères spéciaux Ils sont équivalents: System.out.println("Salam tout le monde"); System.out.print("Salam tout le monden"); n à la ligne t tab Chaînes de caractères 48
  • 49. 49 Comparaisons de chaînes de caractères 49
  • 50. 50 L’opérateur == 1) String ch1 = "Bonjour" ; String ch2 = "Bonjour" ; if (ch1 == ch2) System.out.println ("égales") ; else System.out.println ("différentes") ; 2) String ch1 = "Bonjour" ; String ch2 = "Bon" ; ch2 += "jour" ; if (ch1 == ch2) System.out.println ("égales") ; else System.out.println ("différentes") ; Comparaisons de chaînes de caractères 50
  • 51. 51 La méthode equals() La méthode equals() compare le contenu de deux chaînes : String nom = "Fred"; if (nom.equals("Frod")) { System.out.println("Alors, Frod est Fred…"); } C’est la méthode equals() appliquée à une variable de type String Caractère par caractère : F r e d F r o d false 51 Comparaisons de chaînes de caractères
  • 52. 52 La méthode equalsIgnoreCase() La méthode equalsIgnoreCase() compare le contenu de deux chaînes, mais sans distinguer les majuscules des minuscules: String nom = "Salam"; if (nom.equals("salam")) { System.out.println("Alors, c’est l’égalité…"); } S a l a m s a l a m true 52 Comparaisons de chaînes de caractères
  • 53. La méthode compareTo() La méthode compareTo() s’utilise ainsi : chaîne1.compareTo(chaîne2) Elle fournit : un entier négatif si chaîne1 arrive avant chaîne2, un entier nul si chaîne1 et chaîne2 sont égales (on a alors chaîne1.equals(chaîne2)), un entier positif si chaîne1 arrive après chaîne2. 53 Comparaisons de chaînes de caractères 53
  • 54. Exemple String s1 = "Bonjour" ; String s2 = "le monde !" ; int c = s1.compareTo(s2) ; System.out.println(c) ; -> c = -42 c = s2.compareToIgnoreCase(s1) ; System.out.println(c) ; -> c = 10 ; 54 compareTo()/compareToIgnoreCase() 54
  • 55. La méthode startsWith()/endsWith(): Ces deux méthodes renvoient true si la chaîne commence ou se termine par la chaîne passée en paramètre. Exemple String s1 = "Bonjour" ; boolean b = s1.startsWith("a") ; System.out.println(b) ; -> b = false boolean b = s1.endsWith("r") ; System.out.println(b) ; -> b = true 55 Comparaisons de chaînes de caractères 55
  • 56. Méthode format() 56 Formatage de chaînes de caractères 56
  • 57. Méthode printf() 57 Formatage de chaînes de caractères 57
  • 60. 60 Opérations sur les StringBuffer 60
  • 61. Exemple 61 61 String s = "la java" ; StringBuffer sBuf = new StringBuffer(s); System.out.println(sBuf) ; sBuf.setCharAt(3, ’J’); System.out.println(sBuf); sBuf.setCharAt(1, ’e’) ; System.out.println(sBuf); sBuf.append(" 1119 ") ; System.out.println(sBuf); sBuf.insert(3, "langage ") ; System.out.println(sBuf); sBuf.delete(16, 18) ; System.out.println(sBuf); // le premier indice est inclus, le deuxième exclus. sBuf.deleteCharAt(16); System.out.println(sBuf); la java la Java le Java le Java 1119 le langage Java 1119 le langage Java 19 le langage Java 9 Opérations sur les StringBuffer
  • 62. Exemple 62 62 StringBuffer buff = new StringBuffer("Hello Mum ."); buff.replace(6, 9, "World"); buff.setCharAt(12, '!'); buff.reverse(); System.out.println (buff); // Affiche ! dlroW olleH Opérations sur les StringBuffer
  • 65. Remarque: Pour plus de détails sur les trois classes String, StringBuilder et StringBuffer voir les liens suivants: https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/String.html https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/StringBuffer.html https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/StringBuilder.html 65 String/StringBuffer/StringBuilder 65
  • 67. 67 Références 1. Programmer en Java, Claude Delannoy, Eyrolles, 2016 2. Programmation orientée objet avec Java, Jacques Bapst, École d’Ingénieurs et d’Architectes de Fribourg. 3. http://blog.paumard.org/cours/java/ 4. http://www.tutorialspoint.com/java/ 5. https://docs.oracle.com/en/java/javase/15/index.html 6. …