0. Введение в тип StringBuilder
Тип StringBuilder - это изменяемый тип строки. API типа StringBuilder в основном такой же, как API типа StringBuffer. Единственное отличие состоит в том, что использование StringBuilder предполагает, что он находится в одном потоке. Другими словами, StringBuilder-это небезопасность. При создании StringBuilder он обычно устанавливает размер емкости по умолчанию, как правило, длина параметра строки +16. StringBuilder наследует абстрактный класс AbstractStringBuilder, и абстрактный класс реализуется внутри, используя массивы символов, а массив может быть динамически расширен. Общие методы, предоставленные классом StringBuilder, включают Append (), insert (), reffice (), deleteCharat (), indexof (), reverse (), toString () и другие методы, которые могут реализовать основные функции, такие как добавление, удаление, модификация и поиск строк.
пакет date0812.demo1; public class test3 {public static void main (string [] args) {stringBuilder stringBuilder = new StringBuilder ("eClipse"); // Добавить stringBuilder = stringBuilder.append ("Software"); // емкость int c = stringbuilder.capacity (); // Flip StringBuilder = stringBuilder.Reverse (); System.out.println (c); System.out.println (StringBuilder); }} Результаты работы:
23erawtfos espilce
1. Метод StringBuilder
StringBuilder - это переменная последовательность символов. Он наследует от AbstractStringBuilder и реализует интерфейс Char -Sevectence.
StringBuffer также является подклассом, унаследованным от AbstractStringBuilder; Тем не менее, StringBuilder и StringBuffer разные. Первый не является безопасным, а последний-нитью безопасность.
Диаграмма взаимосвязи между StringBuilder и Char -Sevecence заключается в следующем:
Список методов StringBuilder:
StringBuilder()StringBuilder(int capacity)StringBuilder(CharSequence seq)StringBuilder(String str)StringBuilder append(float f)StringBuilder append(double d)StringBuilder append(boolean b)StringBuilder append(int i)StringBuilder append(long l)StringBuilder append(char c)StringBuilder append(char[] chars) stringBuilder Append (char [] str, int offset, int len) stringBuilder Приложение (String str) stringBuilder Приложение (Object obj) Приложение stringBuilder (StringBuffer SB) Приложение (int int end) stringBuild емкость () char charat (int index) int codepointat (int index) int codepointbefore (int index) int codepointcount (int start, int end) stringbuilder delete (int start, int end) stringbuilder deleteCharat (int index) void esecapation (int min). substring, int start) int indexof (строка строка) stringbuilder insert (int offset, boolean b) stringbuilder insert (int offset, int i) stringbuilder insert (int offset, long l) stringbuilder insert (int offset, float f) stringbuilder insert (int offset, double d) stringbuilder insert (int infset, war -insertbre insert Offset, char [] ch) stringBuilder Insert (int offset, char [] str, int stroffset, int strlen) stringbuilder insert (int offset, string str) stringbuilder insert (int смещение, объект obj) stringbuilder insert (int offset, char -sevence s) StringBuilder inftse (int intextend int). LastIndExof (String Substring, int start) int length () int offsetByCodePoints (int index, int codePointOffset) stringBuilder Заменить (int nepl, int end, строка String) stringBuilder revers toString () void trimtosize ()
Поскольку исходный код AbstractStringBuilder и StringBuilder слишком длинный, исходный код не будет указан здесь. Заинтересованные читатели могут изучить это сами.
2. Код испытаний API stringBuilder API
2.1 INSERT (INSERT) Связанный API в StringBuilder
Исходный код заключается в следующем (StringBuilderInsertTest.java):
/** * StringBuilder 的 insert () 示例 * * @author Skywang */import java.util.hashmap; открытый класс StringBuilderInsertTest {public Static void main (String [] args) {testinSertApis (); } /** * StringBuilder 的insert()示例*/ private static void testInsertAPIs() { System.out.println("-------------------------------- testInsertAPIs -------------------------------"); StringBuilder sbuilder = new StringBuilder (); // вставить массив символов в позицию 0 sbuilder.insert (0, new char [] {'a', 'b', 'c', 'd', 'e'}); // Вставить массив символов в позицию 0. 0 представляет исходную позицию массива символов, 3 представляет длину sbuilder.insert (0, new char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // вставить float sbuilder.insert (0, 1.414f); // вставить двойной sbuilder.insert (0, 3.14159d); // вставить логический sbuilder.insert (0, true); // вставить char sbuilder.insert (0, '/n'); // INSERT int sbuilder.insert (0, 100); // вставить long sbuilder.insert (0, 14159d); // вставить логический sbuilder.insert (0, true); // вставить char sbuilder.insert (0, '/n'); // INSERT int sbuilder.insert (0, 100); // вставить long sbuilder.insert (0, 12345L); // вставить объект StringBuilder sbuilder.insert (0, new StringBuilder ("stringBuilder")); // вставить объект StringBuilder в положении 0. 6 представляет начальную позицию (включая) объекта, вставленного в позицию 0, 13 является конечным положением (исключая) sbuilder.insert (0, new StringBuilder ("StringBuilder"), 6, 13); // вставить объект StringBuffer в позицию 0. sbuilder.insert (0, new StringBuffer ("stringBuffer")); // Вставьте объект StringBuffer в положении 0. 6 представляет начальную позицию (включая) объекта, вставленного в позицию 0, 12 - конечная позиция (исключая) sbuilder.insert (0, new StringBuffer ("StringBuffer"), 6, 12); // вставить объект строки в позицию 0. sbuilder.insert (0, "string"); // Вставка объекта строки в положении 0. 1 представляет начальную позицию (включая) объекта, вставленного в позицию 0, 6 - конечная позиция (исключая) sbuilder.insert (0, "0123456789", 1, 6); sbuilder.insert (0, '/n'); // Вставьте объект объекта в позицию 0. Здесь мы принимаем HashMap в качестве примера HashMap Map = new HashMap (); map.put ("1", "один"); map.put ("2", "два"); map.put ("3", "три"); sbuilder.insert (0, map); System.out.printf ("%s/n/n", sbuilder); }} Результаты работы:
-------------------------------- testinserTapis ----------------------------------- {3 = три, 2 = два, 1 = один} 12345StringBufferStringBufferBuilderStingBuilder12345100 2.2 Append (Append), связанные с API в StringBuilder
Исходный код заключается в следующем (stringBuilderPAppendTest.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 (); // Приложение массива символов sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}); // Добавление массива символов. 0 указывает начальную позицию массива символов, 3 указывает длину sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // Приложение float sbuilder.append (1.414f); // Добавление Double sbuilder.append (3.14159d); // Приложение Boolean sbuilder.append (true); // Приложение char sbuilder.append ('/n'); // Приложение int sbuilder.append (100); // Добавление Long Sbuilder.Append (12345L); // Приложение stringBuilder Object sbuilder.append (new StringBuilder ("stringBuilder")); // Приложение объекта StringBuilder. 6 Указывает начальную позицию (включая) добавленного объекта, 13 - конечная позиция (исключая) sbuilder.append (new StringBuilder ("StringBuilder"), 6, 13); // Приложение объекта StringBuffer. sbuilder.append (new Stringbuffer ("stringbuffer")); // Приложение объекта StringBuffer. 6 Указывает исходную позицию (включая) добавленного объекта, 12 - конечная позиция (исключая) sbuilder.append (new Stringbuffer ("stringbuffer"), 6, 12); // Добавление объекта строки. sbuilder.append ("string"); // Добавление объекта строки. 1 указывает начальную позицию (включая) добавленного объекта, 6 - конечная позиция (исключая) sbuilder.append ("0123456789", 1, 6); sbuilder.append ('/n'); // Приложение объекта объекта. Здесь мы принимаем HashMap в качестве примера HashMap Map = new HashMap (); map.put ("1", "один"); map.put ("2", "два"); map.put ("3", "три"); sbuilder.append (map); sbuilder.append ('/n'); // Приложение кодирования Unicode sbuilder.appendCodepoint (0x5b57); // 0x5b57 - кодирование Unicode sbuilder.appendCodepoint (0x7b26); // 0x7b26 - кодирование Unicode Sbuilder.appendCodepoint (0x7f16); // 0x7f16 - это «кодированный» кодирование Unicode sbuilder.appendcodepoint (0x7801); // 0x7801 - это «кодированная» система кодирования Unicode.out.printf («%s/n/n», sbuilder); }} Результаты работы:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
2.3 Замените связанные API в StringBuilder
Исходный код заключается в следующем (StringBuilderReplacetest.java):
/** * stringBuilder 的 replace () 示例 * * @author skywang */import java.util.hashmap; public class stringbuilderreplacetest {public static void main (string [] args) {testreplaceapis (); } / *** stringBuilder 的 replace () 示例* / 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 (); }} Результаты работы:
-------------------------------- TestReplAceapis ------------------------------ SBUILDER = ABCDE3456789SBUILDER = 9876543210SBUILDER = M123456789
2.4 Удалить (удалить) связанный API в StringBuilder
Исходный код заключается в следующем (StringBuilderDeleteSt.java):
/** * stringBuilder 的 delete () 示例 * * @author skywang */import java.util.hashmap; public class stringbuilderdeletetest {public static void main (string [] args) {testdeleteapis (); } /** * StringBuilder 的delete()示例*/ private static void testDeleteAPIs() { System.out.println("-------------------------------- testDeleteAPIs -------------------------------"); StringBuilder sbuilder = new StringBuilder ("0123456789"); // Удалить символ в положении 0, оставшийся символ «123456789». sbuilder.deletecharat (0); // Удалить символы между позицией 3 (включая) и позицией 6 (исключая), а остальные символы - «123789». sbuilder.delete (3,6); // Получить строку, начиная с позиции 1 в SB String Str1 = sbuilder.substring (1); // Получить строку из позиции 3 (включая) до позиции 5 (исключая) в SB String Str2 = sbuilder.substring (3, 5); // Получить строку из позиции 3 (включая) до позиции 5 (исключая) в SB String Str3 = (String) sbuilder.subeSequence (3, 5); System.out.printf ("sbuilder =%s/nstr1 =%s/nstr2 =%s/nstr3 =%s/n", sbuilder, str1, str2, str3); }} Результаты работы:
-------------------------------- TestDeleteApis ------------------------------- SBUILDER = 123789STR1 = 23789STR2 = 78STR3 = 78
2.5 API, связанный с индексом, в StringBuilder
Исходный код заключается в следующем (StringBuilderDextest.java):
/** * Демонстрация API, связанная с индексом в StringBuilder * * @author Skywang */import java.util.hashmap; открытый класс StringBuilderIndextest {public Static void main (string [] args) {testIndexApis (); } / *** Демонстрация API, связанная с индексом, в StringBuilder* / Private Static void TestIndExapis () { System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- StringBuilder sbuilder = New StringBuilder ("Abcabcabcabcabcabcabcabc"); sbuilder.indexof ("bc")); «BC» появляется в первый раз System.out.printf (« %-30S = %d/n», «sbuilder.lastIndexof (/" bc/")", sbuilder.lastindexof ("bc")); // 4. С спинкой на спереди найдите место, где «BC» появляется в первый раз System.out.printf (« %-30s = %d/n», «sbuilder.lastindexof (/" bc/", 4)", sbuilder.lastindexof ("bc", 4)); System.out.println (); }} Результаты работы:
-------------------------------- TestIndexApis ------------------------------------ SBUILDER = ABCABCABCABCABCABCABCSBUILDER.INDEXOF ("BC") = 1SBUILDER.INDEXOF ("BC", 5) = 22SBUILDE 22sbuilder.lastindexof ("bc", 4) = 4 2.6 StringBuilder остается API
Исходный код заключается в следующем (StringBuilderThertest.java):
/** * Другие примеры API StringBuilder * * @author Skywang */import java.util.hashmap; public class stringbuilderothertest {public static void main (string [] args) {testotherapis (); } / *** Другие примеры API stringBuilder* / private static void testotherapis () { System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ new StringBuilder ("0123456789"); 0); Результаты работы:
-------------------------------- Testotherapis ------------------------------------ CAP = 26C = 6CARR [0] = 3 CARR [1] = 4 CARR [2] = 5 CARR [3] = 6
3. Полный пример StringBuilder
Следующий пример - полная демонстрационная программа StringBuilder, интегрирующая приведенные выше примеры. Исходный код заключается в следующем (stringbuildertest.java):
/** * Демо -программа StringBuilder * * @author Skywang */import java.util.hashmap; public class stringbuildertest {public static void main (string [] args) {testotherapis (); testIndexapis (); testinsertapis (); testappendapis (); testReplAceapis (); testdeleteapis (); } /** * Other API examples of StringBuilder*/ private static void testOtherAPIs() { 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 testIndexAPIs() { System.out.println("-------------------------------- testIndexAPIs --------------------------------"); StringBuilder sbuilder = new StringBuilder ("abcabcabcabcabcabcabcabcc"); System.out.printf ("sbuilder =%s/n", sbuilder); // 1. Спереди к спине найдите место, где «BC» появляется в первый раз System.out.printf (« %-30s = %d/n», «sbuilder.indexof (/" bc/")", sbuilder.indexof ("bc")); // 2. Из позиции 5 спереди к спине найдите место, где «BC» появляется в первый раз System.out.printf (« %-30s = %d/n», «sbuilder.indexof (/" bc/", 5)", sbuilder.indexof ("bc", 5)); // 3. С спинкой допереди найдите место, где «BC» появляется в первый раз System.out.printf (« %-30s = %d/n», "sbuilder.lastindexof (/" bc/")", sbuilder.lastindexof ("bc")); // 4. С спинкой на спереди найдите место, где «BC» появляется в первый раз System.out.printf (« %-30s = %d/n», «sbuilder.lastindexof (/" bc/", 4)", sbuilder.lastindexof ("bc", 4)); System.out.println (); } / *** stringBuilder 的 replace () 示例* / 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 () пример* / private static void testdeleteApis () { System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sbuilder.deletecharat (0); str2 = sbuilder.substring (3, 5); System.out.printf ("sbuilder =%s/nstr1 =%s/nstr2 =%s/nstr3 =%s/n", sbuilder, str1, str2, str3); } / *** stringBuilder insert () пример* / private static void testinSertapis () { System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0 представляет собой начальную позицию массива символов, 3 представляет собой длину sbuilder.insert (0, new char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); sbuilder.insert (0, true); // вставить char sbuilder.insert (0, '/n'); // INSERT int sbuilder.insert (0, 100); // вставить long sbuilder.insert (0, 12345L); // вставить объект StringBuilder sbuilder.insert (0, new StringBuilder ("stringBuilder")); // вставить объект StringBuilder в положении 0. 6 представляет начальную позицию (включая) объекта, вставленного в позицию 0, 13 является конечным положением (исключая) sbuilder.insert (0, new StringBuilder ("StringBuilder"), 6, 13); // вставить объект StringBuffer в позицию 0. sbuilder.insert (0, new StringBuffer ("stringBuffer")); // Вставьте объект StringBuffer в положении 0. 6 представляет начальную позицию (включая) объекта, вставленного в позицию 0, 12 - конечная позиция (исключая) sbuilder.insert (0, new StringBuffer ("StringBuffer"), 6, 12); // вставить объект строки в позицию 0. sbuilder.insert (0, "string"); // Вставка объекта строки в положении 0. 1 представляет начальную позицию (включая) объекта, вставленного в позицию 0, 6 - конечная позиция (исключая) sbuilder.insert (0, "0123456789", 1, 6); sbuilder.insert (0, '/n'); // вставить объект объекта в позицию 0. 此处以 Hashmap 为例 Hashmap Map = new HashMap (); map.put ("1", "один"); map.put ("2", "два"); map.put ("3", "три"); sbuilder.insert (0, map); System.out.printf ("%s/n/n", sbuilder); } / *** stringBuilder 的 append () 示例* / private static void testAppendApis () {System.out.println ("-------------------------------- TestAppendApis --------------------------------------"); StringBuilder sbuilder = new StringBuilder (); // Приложение массива символов sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}); // Добавление массива символов. 0 указывает начальную позицию массива символов, 3 указывает длину sbuilder.append (new char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // Приложение float sbuilder.append (1.414f); // Добавление Double sbuilder.append (3.14159d); // Приложение Boolean sbuilder.append (true); // Приложение char sbuilder.append ('/n'); // Приложение int sbuilder.append (100); // Добавление Long Sbuilder.Append (12345L); // Приложение stringBuilder Object sbuilder.append (new StringBuilder ("stringBuilder")); // Приложение объекта StringBuilder. 6 Указывает начальную позицию (включая) добавленного объекта, 13 - конечная позиция (исключая) sbuilder.append (new StringBuilder ("StringBuilder"), 6, 13); // Приложение объекта StringBuffer. sbuilder.append (new Stringbuffer ("stringbuffer")); // Приложение объекта StringBuffer. 6 Указывает исходную позицию (включая) добавленного объекта, 12 - конечная позиция (исключая) sbuilder.append (new Stringbuffer ("stringbuffer"), 6, 12); // Добавление объекта строки. sbuilder.append ("string"); // Добавление объекта строки. 1 указывает начальную позицию (включая) добавленного объекта, 6 - конечная позиция (исключая) sbuilder.append ("0123456789", 1, 6); sbuilder.append ('/n'); // Приложение объекта объекта. Здесь мы принимаем HashMap в качестве примера HashMap Map = new HashMap (); map.put ("1", "один"); map.put ("2", "два"); map.put ("3", "три"); sbuilder.append (map); sbuilder.append ('/n'); // Приложение кодирования Unicode sbuilder.appendCodepoint (0x5b57); // 0x5b57 - кодирование Unicode sbuilder.appendCodepoint (0x7b26); // 0x7b26 - кодирование Unicode Sbuilder.appendCodepoint (0x7f16); // 0x7f16 - это «кодированный» кодирование Unicode sbuilder.appendcodepoint (0x7801); // 0x7801 - это «кодированная» система кодирования Unicode.out.printf («%s/n/n», sbuilder); }}