Différence entre String et StringBuffer, classe en Java

Auteur: Laura McKinney
Date De Création: 3 Avril 2021
Date De Mise À Jour: 15 Peut 2024
Anonim
Différence entre String et StringBuffer, classe en Java - La Technologie
Différence entre String et StringBuffer, classe en Java - La Technologie

Contenu


String et StringBuffer sont les deux classes qui fonctionnent sur les chaînes. La classe StringBuffer est la classe des pairs de la classe String. L'objet de la classe String est de longueur fixe. L'objet de la classe StringBuffer peut être développé. La différence fondamentale entre String et StringBuffer réside dans le fait que l’objet de la classe «String» est immuable. L'objet de la classe “StringBuffer” mutable.

  1. Tableau de comparaison
  2. Définition
  3. Différences Clés
  4. Conclusion

Tableau de comparaison

Base de comparaisonChaîneStringBuffer
De baseLa longueur de l'objet String est fixée.La longueur du StringBuffer peut être augmentée.
ModificationL'objet String est immuable.L'objet StringBuffer est modifiable.
PerformanceIl est plus lent lors de la concaténation.C'est plus rapide lors de la concaténation.
MémoireConsomme plus de mémoire.Consomme moins de mémoire.
Espace de rangementChaîne constante de la piscine.Mémoire de tas.


Définition de chaîne

"String" est une classe en Java. L'objet de la classe String a une longueur fixe, et le plus important à retenir est que l'objet de la classe String est «immuable». Une fois que vous initialisez l'objet String, vous ne pouvez plus le modifier. L'objet de la classe String est stocké dans le pool de constantes String.

Laissez-nous d'abord comprendre cela, chaque fois que vous créez une chaîne; vous créez un objet de type chaîne. Les constantes de chaîne sont également des objets de chaîne.

System.out.ln ("Bonjour, c'est la solution Teckpix");

Dans la déclaration ci-dessus, la chaîne «Bonjour, ceci est la solution Teckpix» est une constante de chaîne.

Voyons maintenant la mutabilité de l'objet String à l'aide d'un exemple.

String str = new String ("Teckpix"); str.concat ("solution"); system.out.ln (str); // sortie Teckpix

Dans le code ci-dessus, j'ai essayé de concaténer les deux chaînes «Teckpix» et «Solution». Comme nous le savons chaque fois qu'une chaîne est créée, cela signifie que l'objet de type Chaîne est créé. Par conséquent, la chaîne «Teckpix» crée un objet dont la référence est affectée à l'objet chaîne «str». Ensuite, j'ai essayé de concaténer une autre chaîne «Solution» avec la chaîne «Teckpix» à l'aide de la méthode «concat ()» de la classe String.


Les objets String étant immuables, aucune modification n'est apportée à la chaîne “Teckpix” et la nouvelle chaîne “Solution” crée un autre objet dans le pool de constantes de chaînes. Cependant, la référence à l'objet «Solution» n'est capturée par aucun objet. Par conséquent, la référence à l'objet Solution est perdue même si elle est toujours présente dans le pool de constantes de chaînes. Comme aucune modification n’est apportée à l’objet Teckpix, lorsqu’il s’agit de l’objet str auquel j’ai précédemment assigné la référence à Teckpix, la chaîne «Teckpix» sera uniquement.

Définition de StringBuffer

La classe “StringBuffer” est la classe homologue de la classe “String”. La classe StringBuffer fournit plus de fonctionnalités aux chaînes. L'objet de la classe StringBuffer est modifiable, c'est-à-dire que son objet peut être modifié. La longueur de l'objet StringBuffer peut être développée. Vous pouvez insérer les caractères ou les sous-chaînes au milieu du littéral de chaîne affecté à l'objet StringBuffer ou à la fin de celui-ci. StringBuffer alloue de l'espace pour 16 caractères supplémentaires lorsqu'aucune longueur spécifique n'est demandée.

Laissez-nous comprendre la mutabilité de l'objet StringBuffer à l'aide d'un exemple:

StringBuffer Sb = new StringBuffer ("Teckpix"); Sb.append ("Solution"); system.out.ln (Sb); // Sortie de la solution Teckpix

Comme nous savons que l'objet StringBuffer est modifiable. La méthode append () modifie l'objet StringBuffer Sb auquel, initialement, la référence de l'objet "Teckpix" est affectée plus tôt. La méthode append () ajoute le nouveau littéral de chaîne «Solution» à la fin du littéral de chaîne «Teckpix». Maintenant, quand j’obtiens l’objet Sb, l’objet chaîne modifié «Solutions Teckpix» sera créé.

  1. La longueur de l'objet String est fixe, mais la longueur d'un objet de StringBuffer peut être augmentée si nécessaire.
  2. L’objet String est immuable, c’est-à-dire qu’il ne peut pas être réaffecté, alors que l’objet de StringBuffer est mutable.
  3. Les performances de l'objet String sont plus lentes que celles de l'objet StringBuffer.
  4. L'objet String consomme plus de mémoire alors que les objets StringBuffer consomment moins de mémoire.
  5. Les objets String sont stockés dans un pool constant, tandis que les objets StringBuffer sont stockés dans la mémoire heap.

Conclusion:

Les objets StringBuffer fournissent plus de fonctionnalités aux chaînes que la classe String. Par conséquent, il est préférable de travailler avec StringBuffer au lieu de la classe String.