Maison > Java > javaDidacticiel > Quelle est la différence entre String et StringBuffer en Java ? (comparaison de différence)

Quelle est la différence entre String et StringBuffer en Java ? (comparaison de différence)

不言
Libérer: 2018-09-18 17:19:43
original
8245 Les gens l'ont consulté

Le contenu de cet article porte sur quelle est la différence entre String et StringBuffer en Java ? (Comparaison de différence), il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Avant-propos

  1. String et StringBuffer sont deux classes pour les opérations sur les caractères en Java

  2. Surtout String, vous voyez souvent quelque chose comme ce Un tel code d'affectation, String str = "Hello World", ressemble à int et est considéré comme le type de données de base de Java. En fait, ce n'est pas une classe, une classe spéciale qui peut être affectée directement comme. le type de données de base.

  3. Il existe trois classes en Java qui peuvent opérer sur des caractères :

(1) Character est une classe qui effectue des opérations sur un seul caractère.
(2) String est une classe immuable qui opère sur une chaîne de caractères.
(3) StringBuffer fonctionne également sur une chaîne de caractères, mais c'est une classe variable.

La différence entre les classes String et StringBuffer en Java

  1. Le contenu de l'objet StringBuffer peut être modifié une fois l'objet String généré, il ne peut pas être modifié. est en fait deux choses.

  2. String est un objet, pas un type primitif ; c'est un objet immuable, et une fois créé, sa valeur ne peut pas être modifiée.

  3. La modification d'un objet String existant crée en fait un nouvel objet, puis y enregistre la nouvelle valeur.

  4. String est une classe finale et ne peut pas être héritée.

  5. StringBuffer est un objet mutable. Lorsqu'il est modifié, l'objet ne sera pas rétabli comme String. Il ne peut être établi que via le constructeur. Une fois l'objet créé, l'espace mémoire sera alloué et un null sera initialement enregistré. Lors de l'attribution d'une valeur à StringBuffer, vous pouvez utiliser sa méthode append : obj.append("hello");

  6. StringBuffer est plus efficace que String dans les opérations de connexion de chaîne.

  7. Si le programme nécessite des opérations fréquentes de modification et de connexion sur les chaînes, les performances d'utilisation de StringBuffer seront plus élevées.

  8. Dans la classe String, il n'existe aucune méthode pour modifier un certain caractère dans une chaîne existante puisqu'un seul caractère dans une chaîne Java ne peut pas être modifié, dans le JDK La documentation indique que. les objets de la classe String sont immuables.

  9. Cependant, les chaînes immuables ont un gros avantage : le compilateur peut rendre la chaîne partagée.

  10. StringBuffer est thread-safe et peut être facilement utilisé dans des programmes multithread, mais l'efficacité d'exécution du programme est relativement plus lente.

  11. Les méthodes de la classe StringBuffer se concentrent sur les modifications apportées aux chaînes, telles que l'ajout, l'insertion et la suppression, etc. C'est également la principale différence entre les classes StringBuffer et String.

Comparaison des chaînes de connexion String et StringBuffer

  1. String str = new String("Hello World");str += "hello world" ; Le processus de traitement de cette connexion de chaîne :

    (1) Créer un StringBuffer
    (2) Appeler la méthode append()
    (3) Enfin, le StringBuffer appelle toString() pour réaffecter ; the String
    (4) De ce point de vue, l'opération de connexion de String nécessite plus d'opérations que StringBuffer, et l'efficacité sera compromise.
    (5) De plus, puisque String est un objet immuable, un nouvel objet sera créé à chaque fois qu'il est réaffecté, donc l'objet d'origine sera inutile et sera récupéré, ce qui affectera également les performances.

  2. La classe StringBuffer est une classe auxiliaire qui peut pré-allouer un bloc mémoire d'une longueur spécifiée pour créer un tampon de chaîne. De cette façon, utiliser la méthode append de la classe StringBuffer pour ajouter des caractères est beaucoup plus efficace que d'utiliser l'opérateur "+" de String pour ajouter des caractères à la fin d'une chaîne existante.

  3. Utilisez l'opérateur "+" Chaque fois que vous ajoutez des caractères à une chaîne, l'objet chaîne doit trouver un nouvel espace mémoire pour accueillir la chaîne plus grande. C'est sans aucun doute un temps très long. opération consommatrice. L'ajout de plusieurs caractères signifie réallouer de la mémoire pour la chaîne encore et encore. L'utilisation de StringBuffer évite ce problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal