String et string buffer en java [Résolu/Fermé]

Signaler
-
Messages postés
27
Date d'inscription
lundi 23 octobre 2000
Statut
Membre
Dernière intervention
18 décembre 2002
-
Salut à tous,

Je n'arrive pas à comprendre la différence entre string et stringbuffer, selon l'aide une string instanciée ne pourrait plus etre modifiée alors que les stringbuffer peuvent etre manipulées. Je ne comprend rien car quand j'affecte une valeur à une chaîne string dans un programme, je peux à tout moment lui en affecter une autre ou manipuler la sus dite string. Il me semble que j'arrive à faire les mêmes choses avec des strings ou des stringbuffer, je ne comprend pas !

Qqn a t'il compris la difference qu'il y a vraiment ? Peut on me l'expliquer ?

Merci

1 réponse

Messages postés
27
Date d'inscription
lundi 23 octobre 2000
Statut
Membre
Dernière intervention
18 décembre 2002
61
En fait les String sont effectivement non modifiables. Cela signifie que :
String s1 = "toto";
s1 = s1 + "encore toto";
instancie une chaine s1 avec toto, puis une autre chaine qui est la concaténation de s1 et de "encore toto". Cette derniere chaine etant ensuite affectee a s1. Donc si on fait beaucoup de conatenation, on instancie beaucoup de chaines et ca prend du temps.
D'ou le StringBuffer qui lui est modifiable (on peut ajouter des caractères à un StringBuffer existant sans en recréer un autre).
Dans ce cas :
StringBuffer sb = "toto";
sb.append("encore toto");
String s1=sb.toString();
produira le même résultat que précédemment mais diminuera le nombre d'instanciations. Ce qui est d'autant plus vrai que l'on effectue beaucoup de concatenations.

Ensuite, un des interets des String est que si on a :
String s = "toto";
String s2 = s;
et plus loin
s = "toto2";
on est sûr que s2 garde la valeur "toto" puisque s1 référence une toute nouvelle chaine. Cela signifie que lorsque l'on fait des copies d'objets (par exemple), les chaines n'ont pas besoin d'etre recopiées en profondeur. Une affectation suffit.
64
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci