"Bonjour Amigo !"
« Bonjour, Rishi ! »
"Vous en savez maintenant assez sur les chaînes pour apprendre quelque chose d'intéressant. Plus précisément, une nouvelle classe similaire, mais pas exactement la même, à la classe String."
"Cela semble intrigant, bien que je ne comprenne pas tout à fait comment les chaînes ordinaires sont insuffisantes et pourquoi d'autres classes de type chaîne sont nécessaires."
"Commençons par le fait que les chaînes sont des objets immuables en Java."
« Comment ça ? J'ai oublié... Ou je n'ai jamais su pour commencer... »
"Permettez-moi de vous rappeler que les objets immuables sont ceux dont les états ne peuvent pas être modifiés après leur création."
"Ahhh... Pourquoi les chaînes sont-elles immuables en Java ?"
"Cela a été fait pour rendre la classe String hautement optimisée et pour lui permettre d'être utilisée partout. Par exemple, seuls les types immuables sont recommandés pour être utilisés comme clés dans la collection HashMap .
"Cependant, des situations surviennent souvent où les programmeurs trouveraient plus pratique que la classe String soit modifiable. Ils veulent une classe qui ne crée pas de nouvelle sous-chaîne à chaque fois qu'une de ses méthodes est appelée."
"Mais à quoi ça sert ?"
"Eh bien, supposons que nous ayons une très grande chaîne et que nous devions fréquemment ajouter quelque chose à la fin. Dans ce cas, même une collection de caractères ( ArrayList<Character>
) peut être plus efficace que de recréer et de concaténer constamment des objets String."
"Et c'est pourquoi nous avons besoin de chaînes qui ne sont pas tout à fait la classe String ?"
"Exactement. Le langage Java a ajouté un type de type String qui peut être modifié. Il s'appelle StringBuilder
".
Création d'un objet
"Pour créer un StringBuilder
objet basé sur une chaîne existante, vous devez exécuter une instruction telle que :
StringBuilder name = new StringBuilder(string);
"Pour créer une chaîne mutable vide, vous devez utiliser une instruction comme celle-ci :
StringBuilder name = new StringBuilder();
Liste des méthodes
"La StringBuilder
classe a deux douzaines de méthodes utiles. Voici les plus importantes :
Méthode | Description |
---|---|
|
Convertit l'objet passé en chaîne et l'ajoute à la chaîne actuelle |
|
Convertit l'objet passé en chaîne et insère au milieu de la chaîne actuelle |
|
Remplace la partie de la chaîne spécifiée par l'intervalle début..fin par la chaîne transmise |
|
Supprime le caractère avec l'index spécifié de la chaîne |
|
Supprime les caractères dans l'intervalle spécifié de la chaîne |
|
Recherche une sous-chaîne dans la chaîne courante |
|
Recherche une sous-chaîne dans la chaîne courante, en commençant par la fin |
|
Renvoie le caractère de la chaîne à l'index passé |
|
Renvoie la sous-chaîne définie par l'intervalle spécifié |
|
Inverse la chaîne actuelle. |
|
Remplace le caractère à l'index spécifié par le caractère passé |
|
Renvoie la longueur de la chaîne en caractères |
"Et maintenant, je vais vous décrire brièvement chacune de ces méthodes.
Ajout à une chaîne
"Pour ajouter quelque chose à une chaîne mutable ( StringBuilder
), utilisez la append()
méthode. Exemple :
Code | Description |
---|---|
|
Hi |
Conversion en chaîne standard
"Pour convertir un StringBuilder
objet en objet String, il suffit d'appeler sa toString()
méthode. Exemple
Code | Sortir |
---|---|
|
Hi123 |
Comment supprimer un personnage ?
"Pour supprimer un caractère dans une chaîne mutable, vous devez utiliser la deleteCharAt()
méthode. Exemple :
Code | Sortir |
---|---|
|
Helo |
Comment remplacer une partie d'une chaîne par une autre chaîne ?
« Pour cela il y a la replace(int begin, int end, String str)
méthode. Exemple :
Code | Sortir |
---|---|
|
MeHello!w |
"Ça a l'air pratique. Merci, Rishi."
"N'en parle pas. Que diriez-vous de ça, pouvez-vous retourner une corde à l'envers ? Comment feriez-vous ?"
"Eh bien... je créerais un StringBuilder
, y mettrais une chaîne... Puis créerais une nouvelle chaîne, et dans une boucle du dernier caractère au premier... Ou peut-être un décalage au niveau du bit...
"Pas mal. Mais cela pourrait être plus rapide. Il existe une méthode spéciale pour le faire - reverse();
Exemple :
Code | Sortir |
---|---|
|
olleH |
"Outre la StringBuilder
classe, Java a une autre classe de type chaîne appelée StringBuffer
. C'est un analogue de la StringBuilder
classe, mais ses méthodes sont marquées avec le synchronized
modificateur."
"Qu'est-ce que cela signifie?"
"Cela signifie que l' StringBuffer
objet est accessible simultanément à partir de plusieurs threads."
"Je ne suis pas encore très familier avec les threads. Mais 'accessible à partir de plusieurs threads' est clairement meilleur que 'impossible à accéder à partir de plusieurs threads'... Pourquoi ne pas toujours utiliser StringBuffer
alors ?"
"Parce qu'il est beaucoup plus lent que StringBuilder
. Vous aurez peut-être besoin d'une telle classe lorsque vous commencerez à explorer activement le multithreading dans la quête Java Multithreading .
"J'écrirai ça dans ma mémoire pour ne pas oublier. Marqué "pour l'avenir".
GO TO FULL VERSION