Jacques Bapst
jacques.bapst@hefr.ch
Informatique / Programmation
Programmation orientée objet avec Java
07 : Chaînes de caractères
PR1_07
Java / Chaînes de caractères (String / StringBuffer / StringBuilder)
EIA-FR / Jacques Bapst 2
Chaînes de caractères (String)
En Java les chaînes de caractères sont représentées par des
objets de type String (une classe prédéfinie).
Les chaînes de caractères ne font donc pas partie des types
primitifs mais sont des types référence.
Une syntaxe particulière est utilisée pour définir des littéraux de
type String : on entoure le texte avec des guillemets ("").
On peut insérer des séquences d'échappement (identiques à celles
définies pour le type char) dans les littéraux de type String.
La déclaration et création d'une variable de type String s'effectue
de la manière suivante :
String someText = "Hello";
someTexte
"Hello"
PR1_07
Java / Chaînes de caractères (String / StringBuffer / StringBuilder)
EIA-FR / Jacques Bapst 3
Comparaison de chaînes
Comme pour tous les types référence, l'opérateur "==" compare les
références et non pas les objets référencés (les chaînes de caractères).
La méthode equals() permet, elle, de comparer deux chaînes de
caractères (objets référencés) et retourne true si elles sont égales.
La méthode compareTo() remplace les opérateurs "plus petit", "égal",
"plus grand" en utilisant l'ordre lexicographique (ordre du dictionnaire) et
en retournant respectivement une valeur (int) négative, 0 ou positive.
String myString = "abc";
String otherStr = "abcdef";
if (myString == otherStr)
System.out.println("Same string object");
if (myString.equals(otherStr))
System.out.println("Same contents");
if (myString.compareTo(otherStr) < 0)
System.out.println(myString + " smaller than " + otherStr);
PR1_07
Java / Chaînes de caractères (String / StringBuffer / StringBuilder)
EIA-FR / Jacques Bapst 4
Objets String immuables
Les objets de type String sont immuables : une fois créés ils
ne peuvent plus être modifiés. Naturellement, la variable de type
référence peut changer de valeur, et pointer vers une nouvelle
chaîne (créée à un autre emplacement).
String someText = "Hello";
someText = "Bonjour"; someText
"Hello"
"Bonjour"
Les objets immuables ont l'avantage de pouvoir être partagés sans
risque et l'on évite les problèmes d'alias (optimisations possibles).
Par contre, si l'on manipule fréquemment des objets de type String
(à l'intérieur de boucles par exemple) cela peut conduire à la création
d'un nombre considérable d'objets (temporaires) avec un coût non
négligeable (ressources mémoires et temps d'exécution).
Il est préférable dans ce cas de déclarer et utiliser des objets de
type StringBuffer ou StringBuilder qui sont eux modifiables
(voir pages suivantes).
PR1_07
Java / Chaînes de caractères (String / StringBuffer / StringBuilder)
EIA-FR / Jacques Bapst 5
Opérations sur les chaînes [1]
L'opérateur "+" permet de concaténer (mettre bout à bout) des
chaînes de caractères.
Si un des deux opérandes de l'opérateur "+" est un String , l'autre
opérande sera, si nécessaire, automatiquement converti en un objet
de type String (par invocation de la méthode toString()).
String myText = "Hello";
String s1 = myText + " Mark";
String rec = "Hello" + s1 + 3 + ')';
Remarque :Les objets de type String étant immuables, la concaténation est
implémentée en créant un objet temporaire de type StringBuffer
qui est utilisé ensuite pour créer un nouvel objet de type String.
C'est donc une opération assez lourde.
1 / 15 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !