Analysons la concaténation des cordes ci-dessous.
1.
Ouvrez le code source de la chaîne, comme indiqué sur la figure
Vous constaterez que la valeur de caractère qui stocke la chaîne est une constante finale. En regardant la méthode de construction de la chaîne, nous avons constaté que la valeur de la chaîne est déterminée par la méthode de construction. Il est nécessaire d'expliquer le mot-clé final ici
L'attribut modifié par final est une constante (la valeur ne peut pas être modifiée). On lui attribue une valeur tout en le déclarant ou attribué une valeur dans la méthode de construction. Une fois attribué, il ne peut pas être modifié.
Par conséquent, l'utilisation de la chaîne pour implémenter les coutures de chaîne. Étant donné que la valeur de la chaîne ne peut pas être modifiée, une nouvelle chaîne doit être générée pour chaque couture pour stocker une nouvelle chaîne. Par conséquent, l'utilisation de la chaîne pour gérer les coutures de chaîne aura des performances très faibles.
Pour plus d'informations sur la chaîne, veuillez consulter le blog: http://longpo.iteye.com/blog/2199493
2.StringBuffer
La classe StringBuffer hérite de la classe AbstractStringBuilder de classe abstraite et ouvre le code source AbstractStringBuilder.
Jetons un coup d'œil aux trois méthodes de surcharge
On constate que tous les constructeurs de la classe Parent AbstractStringBuilder sont appelés.
Il a été constaté que le réseau de char dans lequel les données StringBuffer stocke ne sont pas de type final, ce qui signifie qu'il peut être modifié, et les chaînes construites ont toujours un espace libre pour épisser les cordes.
Dans StringBuffer, nous utilisons la fonction APPEND () pour épisser les chaînes. Nous pouvons penser que bien qu'il reste encore dans le tableau char, il ne suffit certainement pas de l'épliances tout le temps. Par conséquent, il est nécessaire d'examiner l'implémentation du code source de la fonction d'ajout.
Consultez la méthode d'ajout de sa classe parent AbstractStringBuilder
Lorsque le tableau de valeur n'est pas capable d'une capacité suffisante, un nouveau tableau de valeur est créé pour stocker la chaîne. À ce stade, vous devez comprendre le principe de l'épissage de StringBuffer String. Lorsque le tableau de valeur de char est insuffisant, un tableau de capacité plus grande sera créé pour stocker. L'efficacité est nettement plus élevée que celle de la corde.
3.StringBuilder
StringBuilder et StringBuffer sont deux frères, et leur utilisation est fondamentalement la même. La différence est que StringBuffer est synchronisé et fileté, tandis que StringBuilder ne garantit pas la synchronisation et la file.
StringBuilder est plus rapide que StringBuffer dans la plupart des implémentations, et lorsque les tampons de chaîne sont accessibles par un seul thread, il est recommandé d'utiliser d'abord StringBuilder.
Ce qui précède est le choix de chaîne Java introduit par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!