String String Constante
Variable StringBuffer String (Thread Safe)
Variable StringBuilder String (SAFE SAFE SAFE)
Pour le dire simplement, la différence de performance principale entre le type de chaîne et le type de stringbuffer est en fait que String est un objet immuable. Par conséquent, chaque fois que vous modifiez le type de chaîne, il équivaut en fait à la génération d'un nouvel objet de chaîne et à la pointe du pointeur vers un nouvel objet String. Par conséquent, il est préférable de ne pas utiliser de chaîne pour des chaînes qui changent souvent de contenu, car chaque fois que l'objet est généré, il aura un impact sur les performances du système. Surtout quand il y a trop d'objets référencés en mémoire, le GC du JVM commencera à fonctionner, ce qui sera certainement assez lent.
Si vous utilisez la classe StringBuffer, le résultat sera différent. Chaque fois que le résultat fonctionne sur l'objet StringBuffer lui-même, au lieu de générer un nouvel objet, puis de modifier la référence d'objet. Par conséquent, en général, nous recommandons d'utiliser StringBuffer, en particulier lorsque les objets de chaîne sont souvent modifiés. Dans certains cas particuliers, l'épissage de chaîne des objets String est en fait interprété par le JVM comme une épissage d'objets StringBuffer. Par conséquent, la vitesse des objets String n'est pas plus lente que les objets StringBuffer à ces moments. Surtout dans la génération d'objets de chaîne suivants, l'efficacité de la chaîne est beaucoup plus rapide que StringBuffer:
String S1 = "Ceci n'est qu'un" + "simple" + "test";
StringBuffer sb = new StringBuilder ("Ceci est seulement un"). APPEND ("Simple"). APPEND ("test");
Vous serez surpris de constater que la vitesse de génération d'objets S1 String est tout simplement trop rapide, et à ce moment, StringBuffer n'a aucun avantage en vitesse. En fait, c'est une astuce de la JVM. Aux yeux du JVM, ce
String S1 = "Ceci n'est qu'un" + "simple" + "test"; En fait, c'est:
String S1 = "Ce n'est qu'un simple test"; Donc, bien sûr, cela ne prend pas trop de temps. Mais ce que vous devez noter ici, c'est que si votre chaîne vient d'un autre
Pour les objets String, la vitesse n'est pas si rapide, par exemple:
String S2 = "Ceci n'est qu'A";
String S3 = "Simple";
String s4 = "test";
String S1 = S2 + S3 + S4;
Pour le moment, le JVM le fera régulièrement de la manière originale
Dans la plupart des cas, StringBuffer> String
Stringbuffer
Java.lang.StringBuffer séquence de caractères mutable en filetage. Un tampon de chaîne de type chaîne, mais ne peut pas être modifié. Bien qu'il contient une certaine séquence de caractères à tout moment, la longueur et le contenu de la séquence peuvent être modifiés par certains appels de méthode.
Les tampons de chaîne peuvent être utilisés en toute sécurité pour plusieurs threads. Ces méthodes peuvent être synchronisées lorsque cela est nécessaire, de sorte que toutes les opérations sur une instance particulière semblent se produire dans un ordre série qui est cohérent avec l'ordre des appels de méthode effectués par chaque thread impliqué.
Les principales opérations sur StringBuffer sont les méthodes d'ajout et d'insertion, qui peuvent être surchargées pour accepter tout type de données. Chaque méthode peut convertir efficacement les données données en une chaîne, puis ajouter ou insérer les caractères de cette chaîne en tampon de chaîne. La méthode d'ajout ajoute toujours ces caractères à la fin du tampon; La méthode d'insert ajoute des caractères au point spécifié.
Par exemple, si Z fait référence à un objet de tampon de chaîne dont le contenu actuel est "Démarrer", cet appel de méthode z.append ("le") fait que le tampon de chaîne contenait "Commerce", et z.insert (4, "le") modifie le tampon de chaîne pour contenir "Starlet".
Dans la plupart des cas, StringBuilder> StringBuffer
java.lang.stringbuilde
java.lang.stringBuilder Une séquence de caractères variable est nouvelle en 5.0. Cette classe fournit une API compatible StringBuffer, mais n'est pas garantie d'être synchronisée. Cette classe est conçue pour être un simple remplacement pour StringBuffer, lorsque des tampons de chaîne sont utilisés par un seul thread (c'est courant). Si possible, il est recommandé de suivre ce cours en premier, car il est plus rapide que StringBuffer dans la plupart des implémentations. Les méthodes des deux sont fondamentalement les mêmes.
Ce qui précède est une compilation des informations sur Java String, StringBuffer et StringBuilder. Nous continuerons d'ajouter des informations pertinentes à l'avenir. Merci pour votre soutien pour ce site Web!