Cet article présente principalement les différences entre String, StringBuffer et StringBuilder en Java et les informations associées sur la façon de l'utiliser. Dans le processus de développement, la classe String est souvent utilisée pour les opérations. Les amis dans le besoin peuvent s'y référer.
La différence entre String, StringBuffer et StringBuilder en Java et comment l'utiliser
1. La valeur de String est immuable , ce qui fait que chaque opération sur String génère un nouvel objet String, ce qui est non seulement inefficace, mais gaspille également beaucoup d'espace mémoire limité.
et une classe d'opération de chaîne thread-safe. Toute opération sur la chaîne vers laquelle elle pointe ne créera pas de nouvel objet. Chaque objet StringBuffer a une certaine capacité de tampon. Lorsque la taille de la chaîne ne dépasse pas la capacité, aucune nouvelle capacité ne sera allouée. Lorsque la taille de la chaîne dépasse la capacité, la capacité sera automatiquement augmentée.
3. StringBuffer
StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区 StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区 StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。
Les fonctions des classes StringBuffer et StringBuilder sont fondamentalement similaires, la principale La différence réside dans la classe StringBuffer. La méthode est multithread et sûre, tandis que StringBuilder n'est pas thread-safe. En comparaison, la classe StringBuilder est légèrement plus rapide. Pour les chaînes dont les valeurs changent souvent, les classes StringBuffer et StringBuilder doivent être utilisées.
1) Tout d'abord, String, StringBuffer et StringBuilder sont tous définis comme classes finales dans le JDK, ce qui signifie qu'ils ne peuvent pas être hérités.
2) String est le plus courant. Par rapport à StringBuffer, String a des performances moins bonnes car un nouvel objet String sera régénéré lorsque le type String est modifié. Cela est évident lors des opérations d'épissage de chaîne. les changements fréquents ne doivent pas utiliser String Si le multithreading n'est pas pris en compte, StringBuilder doit être utilisé.
3) Une fois que StringBuffer a généré un objet, lors de l'exécution d'opérations d'épissage de chaîne, appelez simplement la méthode append. Aucun nouvel objet ne sera généré. Seul l'objet lui-même sera exploité. De plus, StringBuffer est thread-safe, il convient donc à une utilisation multi-thread. Pour cette raison, la vitesse sera plus lente que StringBuilder.
4) L'utilisation de StringBuilder est similaire à StringBuffer, mais il n'est pas thread-safe, il est donc généralement utilisé dans des threads uniques et est plus efficace que StringBuffer.
En résumé, lequel choisir doit être pris en compte sous de nombreux aspects tels que les performances de la mémoire, la sécurité des threads, l'efficacité d'exécution, etc. La réponse peut être obtenue à partir des comparaisons ci-dessus.
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!