0. Introduction à StringBuilder Type
Le type StringBuilder est un type de chaîne mutable. L'API du type StringBuilder est essentiellement la même que l'API du type StringBuffer. La seule différence est que l'utilisation de StringBuilder suppose qu'elle est dans un seul thread. En d'autres termes, StringBuilder est insérété. Lors de l'instanciation de StringBuilder, il définit généralement une taille de capacité par défaut, généralement la longueur du paramètre de chaîne +16. StringBuilder hérite de la classe abstraite AbstractStringBuilder, et la classe abstraite est implémentée en interne à l'aide de tableaux de caractères, et le tableau peut être étendu dynamiquement. Les méthodes courantes fournies par la classe StringBuilder incluent A SPED (), INSERT (), Replace (), DeleteCharat (), IndexOf (), Reverse (), ToString () et d'autres méthodes, qui peuvent réaliser des fonctions de base telles que l'ajout, la suppression, la modification et la recherche des chaînes.
Package Date0812.demo1; public class test3 {public static void main (string [] args) {stringBuilder stringBuilder = new StringBuilder ("eclipse"); // ajouter stringBuilder = stringBuilder.append ("logiciel"); // capacité int c = stringBuilder.capacity (); // flip stringBuilder = stringBuilder.reverse (); System.out.println (C); System.out.println (StringBuilder); }} Résultats en cours:
23erawtfos espilce
1. Méthode StringBuilder
StringBuilder est une séquence de caractères variables. Il hérite de AbstractStringBuilder et met en œuvre l'interface CharSequence.
StringBuffer est également une sous-classe héritée de AbstractStringBuilder; Cependant, StringBuilder et StringBuffer sont différents. Le premier est non-sécurisé, tandis que le second est en forme de fil.
Le diagramme des relations entre StringBuilder et CharSequence est le suivant:
Liste des méthodes StringBuilder:
StringBuilder () StringBuilder (int la capacité) StringBuilder (CharSequence Seq) StringBuilder (String Str) StringBuilder APPEND (Float F) StringBuilder APPEND (DOUBLE D) StringBuilder APPEND (BOOLEAN B) Chars) StringBuilder APPEND (char [] str, int offset, int len) StringBuilder append (String str) StringBuilder append (objet obj) StringBuilder append (stringbuffer sb) stringbuilder append (CharShence csq) stringbuilder apprend (charmedence csq) Capacité () char Charat (int index) int codepointat (int index) int codepointBefore (int index) int codepointCount (int start, int fin) stringBuilder delete (int start, int fin) stringbuilder deletecharat (int INDEXOF (String String) StringBuilder Insert (Int Offset, Booléen B) StringBuilder Insert (Int Offset, int i) StringBuilder Insert (Int Offset, Long L) StringBuilder Insert (Int Offset, Float F) StringBuilder Insert Insert (Int Offset, Double D) StringBuilder Insert (Int Offset, char C) Stringbuild Insert (Int Offset, CHAR [CHAR [CHAR [INT OFFSET, CHAR C) ch) stringBuilder insert (int offset, char [] str, int stroffset, int strlen) stringbuilder insert (int goffset, string str) stringbuilder insert (int stringbuilder insert insert (int gofsère, int, int start, int fin) int lastIndExof (string) intring) intring (int start, int fin) int lastIndExof (String) intring) intring (String S, int start, int fin) int LastIndExof (String) intring) intring). subString, int start)int length()int offsetByCodePoints(int index, int codePointOffset)StringBuilder replace(int start, int end, String string)StringBuilder reverse()void setCharAt(int index, char ch)void setLength(int length)CharSequence subSequence(int start, int end)String substring(int start)String substring(int start, int end)String toString()void trimtoSize ()
Étant donné que le code source d'AbstractStringBuilder et StringBuilder est trop long, le code source ne sera pas répertorié ici. Les lecteurs intéressés peuvent l'étudier eux-mêmes.
2. Code de test API StringBuilder
2.1 INSERT (INSERT) API CONNEXE dans StringBuilder
Le code source est le suivant (StringBuilDeInsertTest.Java):
/ ** * stringBuilder 的 insert () 示例 * * @author skywang * / import java.util.hashmap; public class stringBuilDerInsertTest {public static void main (string [] args) {TesInsertapis (); } / ** * stringBuilder 的 insert () 示例 * / private static void testiNsertapis () {System.out.println ("-------------------------------- TesInsertapis ---------------------------"); StringBuilder sbuilder = new StringBuilder (); // insérer le tableau de caractères en position 0 sbuilder.insert (0, new char [] {'a', 'b', 'c', 'd', 'e'}); // insérer le tableau de caractères en position 0. 0 représente la position de départ du tableau de caractères, 3 représente la longueur sbuilder.insert (0, new char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // insérer float sbuilder.insert (0, 1.414f); // insérer le double sbuilder.insert (0, 3.14159d); // insérer booléen sbuilder.insert (0, true); // insérer char sbuilder.insert (0, '/ n'); // insérer int sbuilder.insert (0, 100); // insérer long sbuilder.insert (0, 14159d); // insérer booléen sbuilder.insert (0, true); // insérer char sbuilder.insert (0, '/ n'); // insérer int sbuilder.insert (0, 100); // insérer long sbuilder.insert (0, 12345l); // insérer l'objet StringBuilder sbuilder.insert (0, new StringBuilder ("StringBuilder")); // insérer l'objet StringBuilder en position 0. 6 représente la position de début (y compris) de l'objet inséré en position 0, 13 est la position finale (à l'exclusion) sbuilder.insert (0, new StringBuilder ("StringBuilder"), 6, 13); // insérer l'objet StringBuffer en position 0. Sbuilder.insert (0, new StringBuffer ("StringBuffer")); // insérer l'objet StringBuffer en position 0. 6 représente la position de début (y compris) de l'objet inséré en position 0, 12 est la position finale (à l'exclusion) sbuilder.insert (0, new StringBuffer ("StringBuffer"), 6, 12); // insérer l'objet String en position 0. Sbuilder.insert (0, "String"); // insérer l'objet de chaîne en position 0. 1 représente la position de début (y compris) de l'objet inséré en position 0, 6 est la position finale (à l'exclusion) sbuilder.insert (0, "0123456789", 1, 6); sbuilder.insert (0, '/ n'); // Insérez l'objet objet en position 0. Ici, nous prenons HashMap comme exemple HashMap Map = new HashMap (); map.put ("1", "un"); map.put ("2", "deux"); map.put ("3", "trois"); sbuilder.insert (0, carte); System.out.printf ("% s / n / n", sbuilder); }} Résultats en cours:
-----------------------------
2.2 APPENDS (APPENDE) API CONNEXES dans StringBuilder
Le code source est le suivant (StringBuilderAPPEndTest.java):
/ ** * StringBuilder 的 APPEND () 示例 * * @author skywang * / import java.util.hashmap; public class stringBuilderAPPEndTest {public static void main (string [] args) {testAPPEndapis (); } / ** * StringBuilder 的 APPEND () 示例 * / Private Static void testAPPEndapis () {System.out.println ("-------------------------------- TestAPPEndapis ---------------------------"); StringBuilder sbuilder = new StringBuilder (); // Ajouter le tableau des caractères sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}); // Ajouter un tableau de caractères. 0 indique la position de départ du tableau de caractères, 3 indique la longueur sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // append float sbuilder.append (1.414f); // appelez le double sbuilder.append (3.14159d); // Ajouter le booléen sbuilder.append (true); // ajoute char sbuilder.append ('/ n'); // Ajouter int sbuilder.append (100); // Ajouter le long sbuilder.append (12345l); // append stringBuilder objet sbuilder.append (new StringBuilder ("stringBuilder")); // APPENDRE STRINGBUILDER OBJET. 6 Indique la position de début (y compris) de l'objet annexe, 13 est la position finale (à l'exclusion) sbuilder.append (new StringBuilder ("StringBuilder"), 6, 13); // Ajouter l'objet StringBuffer. sbuilder.append (new StringBuffer ("StringBuffer")); // Ajouter l'objet StringBuffer. 6 Indique la position de départ (y compris) de l'objet annexe, 12 est la position finale (à l'exclusion) sbuilder.append (new StringBuffer ("StringBuffer"), 6, 12); // Ajouter l'objet String. sbuilder.append ("string"); // Ajouter l'objet String. 1 indique la position de début (y compris) de l'objet annexe, 6 est la position finale (à l'exclusion) sbuilder.append ("0123456789", 1, 6); sbuilder.append ('/ n'); // Ajouter l'objet objet. Ici, nous prenons HashMap comme exemple de HashMap Map = new HashMap (); map.put ("1", "un"); map.put ("2", "deux"); map.put ("3", "trois"); sbuilder.append (map); sbuilder.append ('/ n'); // Ajouter uncode Unicode codage sBuilder.ApendCodePoint (0x5b57); // 0x5b57 est le codage Unicode en codant SBuilder.ApendCodePoint (0x7b26); // 0x7b26 est le codage Unicode en codant SBuilder.ApendCodePoint (0x7f16); // 0x7f16 est le codage Unicode "codé" sbuilder.appendCodePoint (0x7801); // 0x7801 est le System de codage Unicode "encodé", System.out.print ("% S / N / N", SBuilder); }} Résultats en cours:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.3 Remplacer les API associées dans StringBuilder
Le code source est le suivant (StringBuilderReplaceTest.java):
/ ** * StringBuilder 的 remplace () 示例 * * @author skywang * / import java.util.hashmap; public class stringBuilderReplaceTest {public static void main (string [] args) {testReplaceAPis (); } / ** * StringBuilder 的 remplace () 示例 * / private static void testReplaceapis () {System.out.println ("-------------------------------- TestReplaceapis --------------------------"); StringBuilder SBuilder; sbuilder = new StringBuilder ("0123456789"); sbuilder.replace (0, 3, "ABCDE"); System.out.printf ("sbuilder =% s / n", sbuilder); sbuilder = new StringBuilder ("0123456789"); sbuilder.reverse (); System.out.printf ("sbuilder =% s / n", sbuilder); sbuilder = new StringBuilder ("0123456789"); sbuilder.Setcharat (0, «m»); System.out.printf ("sbuilder =% s / n", sbuilder); System.out.println (); }} Résultats en cours:
-------------------------------- TestReplaceapis ------------------------------ SBUILDER = ABCDE3456789SBUILDER = 9876543220SBUILDER = M123456789
2.4 Supprimer (supprimer) API associée dans StringBuilder
Le code source est le suivant (StringBuilderDeleTeTest.Java):
/ ** * StringBuilder 的 Delete () 示例 * * @author skywang * / import java.util.hashmap; public class stringBuilDedeteTeTest {public static void main (string [] args) {TestDeleTapis (); } / ** * StringBuilder 的 Delete () 示例 * / private static void testdeleTeAPIS () {System.out.println ("-------------------------------- TestDeleTapis ---------------------------"); StringBuilder sbuilder = new StringBuilder ("0123456789"); // Supprime le caractère en position 0, le caractère restant est "123456789". sbuilder.deletecharat (0); // Supprimer les caractères entre la position 3 (y compris) et la position 6 (à l'exclusion), et les caractères restants sont "123789". sbuilder.delete (3,6); // Obtenez la chaîne à partir de la position 1 dans SB String str1 = sbuilder.substring (1); // Obtenez la chaîne de la position 3 (y compris) à la position 5 (à l'exclusion) dans SB String str2 = sbuilder.substring (3, 5); // Obtenez la chaîne de la position 3 (y compris) à la position 5 (à l'exclusion) dans SB String Str3 = (String) sbuilder.SubSequence (3, 5); System.out.printf ("sbuilder =% s / nstr1 =% s / nstr2 =% s / nstr3 =% s / n", sbuilder, str1, str2, str3); }} Résultats en cours:
-------------------------------- TestDeleTapis ------------------------------- SBUILDER = 123789STR1 = 23789STR2 = 78STR3 = 78
2.5 API liée à l'index dans StringBuilder
Le code source est le suivant (stringbuilderindextest.java):
/ ** * Démonstration de l'API liée à l'index dans StringBuilder * * @author skywang * / import java.util.hashmap; classe publique StringBuilDeIndextest {public static void main (String [] args) {TestingIndexapis (); } / ** * Démonstration de l'API liée à l'index dans StringBuilder * / private static void testIndexapis () { System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- StringBuilder sbuilder = New StringBuilder ("ABCABCABABABCABABCABABABCC"); sbuilder.indexof ("BC")); "BC" apparaît pour le premier System.out.printf ("% - 30s =% d / n", "sbuilder.llasteIndexof (/" bc / ")", sbuilder.lastindexof ("bc")); // 4. De l'arrière à l'avant, trouvez l'emplacement où "BC" apparaît pour le premier System.out.printf ("% - 30s =% d / n", "sbuilder.lastindexof (/" bc / ", 4)", sbuilder.lastindexof ("bc", 4)); System.out.println (); }} Résultats en cours:
-------------------------------- TESTINDEXAPIS -------------------------------- SBUILDER = ABCABCABABABABABCABABCSBUILDER.Indexof ("BC") = 1SBuilder.Indexof ("BC", 5) = 22SBUILDER.LASTINDEXOF ("BC") = 22SBUILDER.LASTINDEXOF ("BC", 4) = 4 2.6 API restant de StringBuilder
Le code source est le suivant (StringBuilderAtherTest.Java):
/ ** * Autres exemples API de StringBuilder * * @author skywang * / import java.util.hashmap; public class StringBuilderAtterTest {public static void main (string [] args) {testotherapis (); } / ** * Autres exemples d'API de StringBuilder * / private static void testotherapis () { System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ new StringBuilder (0123456789 "); 0); Résultats en cours:
-------------------------------- Testotherapis ---------------------------- CAP = 26C = 6Carr [0] = 3 Carr [1] = 4 Carr [2] = 5 Carr [3] = 6
3. StringBuilder Exemple complet
L'exemple suivant est un programme complet de démonstration StringBuilder intégrant les exemples ci-dessus. Le code source est le suivant (stringbuildertest.java):
/ ** * StringBuilder Demo Program * * @author skywang * / import java.util.hashmap; public class StringBuilderTest {public static void main (string [] args) {testotherapis (); TestIndexapis (); TestiNsertapis (); TestAPPEndapis (); TestReplaceapis (); TestDeleTapis (); } / ** * Autres exemples d'API de StringBuilder * / private static void testotheapis () {System.out.println ("-------------------------------- Testotherapis --------------------------------"); StringBuilder sbuilder = new StringBuilder ("0123456789"); int cap = sbuilder.capacity (); System.out.printf ("cap =% d / n", cap); char c = sbuilder.charat (6); System.out.printf ("c =% c / n", c); char [] Carr = new Char [4]; sbuilder.getchars (3, 7, Carr, 0); for (int i = 0; i <carr.length; i ++) System.out.printf ("carr [% d] =% c", i, carr [i]); System.out.println (); System.out.println (); } / ** * StringBuilder 中 Index 相关 API 演示 * / Private Static void TestingIndexapis () {System.out.println ("---------------------------- TestingIndexapis ------------------------------"); StringBuilder sbuilder = new StringBuilder ("ABCABCABABCABABABABABABC"); System.out.printf ("sbuilder =% s / n", sbuilder); // 1. De l'avant en arrière, trouvez l'emplacement où "BC" apparaît pour le premier système.out.printf ("% - 30s =% d / n", "sbuilder.indexof (/" bc / ")", sbuilder.indexof ("bc")); // 2. De la position 5, de l'avant en arrière, trouvez l'emplacement où "BC" apparaît pour le premier système.out.printf ("% - 30s =% d / n", "sbuilder.indexof (/" bc / ", 5)", sbuilder.indexof ("bc", 5)); // 3. De l'arrière à l'avant, trouvez l'emplacement où "BC" apparaît pour le premier System.out.printf ("% - 30s =% d / n", "sbuilder.lastIndexof (/" bc / ")", sbuilder.lasteLexof ("bc")); // 4. De l'arrière à l'avant, trouvez l'emplacement où "BC" apparaît pour le premier System.out.printf ("% - 30s =% d / n", "sbuilder.lastindexof (/" bc / ", 4)", sbuilder.lastindexof ("bc", 4)); System.out.println (); } / ** * StringBuilder 的 remplace () 示例 * / private static void testReplaceapis () {System.out.println ("-------------------------------- TestReplaceapis --------------------------"); StringBuilder SBuilder; sbuilder = new StringBuilder ("0123456789"); sbuilder.replace (0, 3, "ABCDE"); System.out.printf ("sbuilder =% s / n", sbuilder); sbuilder = new StringBuilder ("0123456789"); sbuilder.reverse (); System.out.printf ("sbuilder =% s / n", sbuilder); sbuilder = new StringBuilder ("0123456789"); sbuilder.Setcharat (0, «m»); System.out.printf ("sbuilder =% s / n", sbuilder); System.out.println (); } / ** * StringBuilder Delete () Exemple * / private static void testdeleTeAPIS () { System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Les caractères de la position 3 (y compris) et la position 6 (excluant), et les caractères restants sont "123789". str2 = sbuilder.substring (3, 5); System.out.printf ("sbuilder =% s / nstr1 =% s / nstr2 =% s / nstr3 =% s / n", sbuilder, str1, str2, str3); } / ** * StringBuilder insert () Exemple * / private static void testiNsertapis () { System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0 représente la position de départ du tableau des caractères, 3 représente la longueur sbuilder.insert (0, nouveau char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); sbuilder.insert (0, true); // insérer char sbuilder.insert (0, '/ n'); // insérer int sbuilder.insert (0, 100); // insérer long sbuilder.insert (0, 12345l); // insérer l'objet StringBuilder sbuilder.insert (0, new StringBuilder ("StringBuilder")); // insérer l'objet StringBuilder en position 0. 6 représente la position de début (y compris) de l'objet inséré en position 0, 13 est la position finale (à l'exclusion) sbuilder.insert (0, new StringBuilder ("StringBuilder"), 6, 13); // insérer l'objet StringBuffer en position 0. Sbuilder.insert (0, new StringBuffer ("StringBuffer")); // insérer l'objet StringBuffer en position 0. 6 représente la position de début (y compris) de l'objet inséré en position 0, 12 est la position finale (à l'exclusion) sbuilder.insert (0, new StringBuffer ("StringBuffer"), 6, 12); // insérer l'objet String en position 0. Sbuilder.insert (0, "String"); // insérer l'objet de chaîne en position 0. 1 représente la position de début (y compris) de l'objet inséré en position 0, 6 est la position finale (à l'exclusion) sbuilder.insert (0, "0123456789", 1, 6); sbuilder.insert (0, '/ n'); // Insérez l'objet objet en position 0. 此处以 Hashmap 为例 HashMap Map = new HashMap (); map.put ("1", "un"); map.put ("2", "deux"); map.put ("3", "trois"); sbuilder.insert (0, carte); System.out.printf ("% s / n / n", sbuilder); } / ** * StringBuilder 的 APPEND () 示例 * / Private Static void testAPPEndapis () {System.out.println ("-------------------------------- TestAPPEndapis ------------------------------"); StringBuilder sbuilder = new StringBuilder (); // Ajouter le tableau des caractères sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}); // Ajouter un tableau de caractères. 0 indique la position de départ du tableau de caractères, 3 indique la longueur sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // append float sbuilder.append (1.414f); // appelez le double sbuilder.append (3.14159d); // Ajouter le booléen sbuilder.append (true); // ajoute char sbuilder.append ('/ n'); // Ajouter int sbuilder.append (100); // Ajouter le long sbuilder.append (12345l); // append stringBuilder objet sbuilder.append (new StringBuilder ("stringBuilder")); // APPENDRE STRINGBUILDER OBJET. 6 Indique la position de début (y compris) de l'objet annexe, 13 est la position finale (à l'exclusion) sbuilder.append (new StringBuilder ("StringBuilder"), 6, 13); // Ajouter l'objet StringBuffer. sbuilder.append (new StringBuffer ("StringBuffer")); // Ajouter l'objet StringBuffer. 6 Indique la position de départ (y compris) de l'objet annexe, 12 est la position finale (à l'exclusion) sbuilder.append (new StringBuffer ("StringBuffer"), 6, 12); // Ajouter l'objet String. sbuilder.append ("string"); // Ajouter l'objet String. 1 indique la position de début (y compris) de l'objet annexe, 6 est la position finale (à l'exclusion) sbuilder.append ("0123456789", 1, 6); sbuilder.append ('/ n'); // Ajouter l'objet objet. Ici, nous prenons HashMap comme exemple de HashMap Map = new HashMap (); map.put ("1", "un"); map.put ("2", "deux"); map.put ("3", "trois"); sbuilder.append (map); sbuilder.append ('/ n'); // Ajouter uncode Unicode codage sBuilder.ApendCodePoint (0x5b57); // 0x5b57 est le codage Unicode en codant SBuilder.ApendCodePoint (0x7b26); // 0x7b26 est le codage Unicode en codant SBuilder.ApendCodePoint (0x7f16); // 0x7f16 est le codage Unicode "codé" sbuilder.appendCodePoint (0x7801); // 0x7801 est le System de codage Unicode "encodé", System.out.print ("% S / N / N", SBuilder); }}