Recommandé, 2024

Choix De L'Éditeur

Différence entre String et StringBuffer, classe en Java

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" est modifiable .

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 de piscine constante.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.println ("Bonjour, c'est la solution Teckpix"); 

Dans l’instruction ci-dessus, la chaîne «Bonjour, c’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.println (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 bien qu'elle soit toujours présente dans le pool de constantes de chaînes. Comme aucune modification n’est apportée à l’objet Teckpix, lors de l’impression de l’objet str auquel j’ai précédemment assigné la référence à Teckpix, la chaîne “Teckpix” n’est imprimée que.

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:

 StringBuffre Sb = new StringBuffer ("Teckpix"); Sb.append ("Solution"); system.out.println (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, lorsque j'imprime l'objet Sb, il imprimera l'objet de chaîne modifié «Solutions Teckpix».

Différence de clé entre String et StringBuffer

  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 que l'objet ne peut pas être réaffecté, alors que l'objet de StringBuffer est modifiable.
  3. Les performances de l’objet String sont plus lentes, alors que l’objet StringBuffer est plus rapide.
  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 davantage de fonctionnalités aux chaînes par rapport à la classe String. Par conséquent, il est préférable de travailler avec StringBuffer au lieu de la classe String.

Top