0. Introducción al tipo de StringBuilder
El tipo StringBuilder es un tipo de cadena mutable. La API del tipo StringBuilder es básicamente la misma que la API del tipo StringBuffer. La única diferencia es que el uso de StringBuilder asume que está en un solo hilo. En otras palabras, StringBuilder es Insecure de Thread. Al instancias de StringBuilder, generalmente establece un tamaño de capacidad de forma predeterminada, generalmente la longitud del parámetro de cadena +16. StringBuilder hereda la clase abstracta AbstractStringBuilder, y la clase abstracta se implementa internamente utilizando matrices de caracteres, y la matriz se puede expandir dinámicamente. Los métodos comunes proporcionados por la clase StringBuilder incluyen append (), insert (), reemplazar (), deleteCarat (), indexOf (), reverse (), toString () y otros métodos, que pueden realizar funciones básicas como agregar, eliminar, modificar y buscar cadenas.
paquete date0812.demo1; public class test3 {public static void main (string [] args) {stringBuilder stringBuilder = new StringBuilder ("eclipse"); // agregar stringBuilder = stringBuilder.append ("Software"); // capacidad int c = stringBuilder.capacity (); // Flip StringBuilder = StringBuilder.Reverse (); System.out.println (c); System.out.println (StringBuilder); }} Resultados de ejecución:
23erawtfos espilce
1. Método StringBuilder
StringBuilder es una secuencia de caracteres variable. Hereda de AbstractStringBuilder e implementa la interfaz CharSequence.
StringBuffer también es una subclase heredada de AbstractStringBuilder; Sin embargo, StringBuilder y StringBuffer son diferentes. El primero no es seguro para el hilo, mientras que el segundo es seguro de hilo.
El diagrama de relaciones entre StringBuilder y CharSequence es el siguiente:
Lista de métodos de StringBuilder:
StringBuilder () stringBuilder (int capacidad) 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) l) append (char c) stringbuilder (char [] char [] stringBuilder append (long l) l) append (char c) append (char [] str, int offset, int len) StringBuilder append (string str) stringBuilder append (object obj) stringBuilder append (stringBuffer sb) StringBuilder append (chareSeScence csq) stringBuilder append (chareSeScence csq, int start, int end) CodePointat (int index) int codePointBore (int index) int codePointCount (int inicio, int end) StringBuilder Eliminar (int inicio, int end) StringBuilder DeleteCharat (int index) Void EnsureCapacity (int min) void getChars (int inicio, end, char [] dst, int dstSTART) int indexf (string sustring, intstring, intent (start) offset, boolean b) stringBuilder Insert (int offset, int i) stringBuilder Insertar (int offset, long l) stringBuilder insert (int offset, float f) stringBuilder Insertar (int offset, doble d) stringBuilder insertar (int offset, char c) stringBuilder (int offetset, char [] ch) che insert (int offset, string str) stringBuilder Insertar (int offset, object obj) stringBuilder insert (int offset, charSequence s) stringBuilder insert (int offset, charSequence s, int start, int end) int LastIndexOf (String String) int LastIndexOf (String Substring, int) int longitud () int offetSetByCodeCodeP (int CodePointOffset, end de CodePoIffet). String String) StringBuilder Reverse () void setCharat (int index, char ch) void setLength (int long) CharSECHENCE subSequence (int start, int end) String subceptor (int inicio) String subceptor (int inicio, int end) String toString () void Trimtosize ()
Dado que el código fuente de AbstractStringBuilder y StringBuilder es demasiado largo, el código fuente no se enumerará aquí. Los lectores interesados pueden estudiarlo ellos mismos.
2. Código de prueba de API de StringBuilder
2.1 Insertar (insertar) API relacionada en StringBuilder
El código fuente es el siguiente (StringBuilderInsertTest.java):
/** * StringBuilder 的 insert () 示例 * * @author Skywang */import java.util.hashmap; public class StringBuilderInsertTest {public static void main (string [] args) {testInsertapis (); } / *** StringBuilder 的 Insert () 示例* / Private static void testInsertapis () {System.out.println ("-------------------------------- TestInsertapis -------------------------------"); StringBuilder sBuilder = new StringBuilder (); // Inserte la matriz de caracteres en la posición 0 sbuilder.insert (0, nuevo char [] {'a', 'b', 'c', 'd', 'e'}); // Insertar la matriz de caracteres en la posición 0. 0 representa la posición inicial de la matriz de caracteres, 3 representa la longitud sbuilder.insert (0, nueva char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // insertar float sbuilder.insert (0, 1.414f); // insertar doble sbuilder.insert (0, 3.14159d); // insertar sbuilder boolean.insert (0, verdadero); // insertar char sbuilder.insert (0, '/n'); // insertar int sbuilder.insert (0, 100); // insertar sbuilder long.insert (0, 14159d); // insertar sbuilder boolean.insert (0, verdadero); // insertar char sbuilder.insert (0, '/n'); // insertar int sbuilder.insert (0, 100); // insertar sbuilder long.insert (0, 12345l); // Inserte el objeto StringBuilder sBuilder.insert (0, nuevo StringBuilder ("StringBuilder")); // Insertar el objeto StringBuilder en la posición 0. 6 representa la posición de inicio (incluido) del objeto insertado en la posición 0, 13 es la posición final (excluyendo) sbuilder.insert (0, nuevo stringBuilder ("StringBuilder"), 6, 13); // Inserte el objeto StringBuffer en la posición 0. SBuilder.insert (0, nuevo StringBuffer ("StringBuffer")); // Inserte el objeto StringBuffer en la posición 0. 6 representa la posición de inicio (incluido) del objeto insertado en la posición 0, 12 es la posición final (excluyendo) sbuilder.insert (0, nueva stringbuffer ("stringbuffer"), 6, 12); // inserta el objeto de cadena en la posición 0. SBuilder.insert (0, "String"); // Inserte el objeto de cadena en la posición 0. 1 representa la posición de inicio (incluido) del objeto insertado en la posición 0, 6 es la posición final (excluyendo) sbuilder.insert (0, "0123456789", 1, 6); sbuilder.insert (0, '/n'); // Inserte el objeto objeto en la posición 0. Aquí tomamos el hashmap como un ejemplo de mapa hashmap = new Hashmap (); map.put ("1", "one"); map.put ("2", "dos"); map.put ("3", "tres"); sbuilder.insert (0, mapa); System.out.printf ("%s/n/n", sbuilder); }} Resultados de ejecución:
---------------------------
2.2 API relacionadas con la append (append) en StringBuilder
El código fuente es el siguiente (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 (); // Agregar la matriz de caracteres sbuilder.append (new Char [] {'a', 'b', 'c', 'd', 'e'}); // Agregar la matriz de personajes. 0 indica la posición inicial de la matriz de caracteres, 3 indica la longitud sbuilder.append (nueva char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // Agregar float sbuilder.append (1.414f); // Agregar doble sbuilder.append (3.14159d); // Agregar boolean sbuilder.append (verdadero); // Append char sbuilder.append ('/n'); // Append int sbuilder.append (100); // agregar long sbuilder.append (12345l); // Append StringBuilder Object sbuilder.append (new StringBuilder ("StringBuilder")); // Agregar objeto StringBuilder. 6 indica la posición de inicio (que incluye) del objeto agregado, 13 es la posición final (excluyendo) sbuilder.append (nueva stringBuilder ("StringBuilder"), 6, 13); // Agregar objeto StringBuffer. sbuilder.append (new StringBuffer ("StringBuffer")); // Agregar objeto StringBuffer. 6 indica la posición inicial (que incluye) del objeto adjunto, 12 es la posición final (excluyendo) sbuilder.append (new StringBuffer ("StringBuffer"), 6, 12); // Agregar objeto de cadena. sbuilder.append ("cadena"); // Agregar objeto de cadena. 1 indica la posición de inicio (que incluye) del objeto adjunto, 6 es la posición final (excluyendo) sbuilder.append ("0123456789", 1, 6); sbuilder.append ('/n'); // Agregar objeto objeto. Aquí tomamos el hashmap como un ejemplo de mapa hashmap = new Hashmap (); map.put ("1", "one"); map.put ("2", "dos"); map.put ("3", "tres"); sbuilder.append (mapa); sbuilder.append ('/n'); // Agregar unicode codificando sbuilder.appendCodePoint (0x5b57); // 0x5b57 es el unicode que codifica sbuilder.appendCodePoint (0x7b26); // 0x7b26 es el unicode que codifica sbuilder.appendCodePoint (0x7f16); // 0x7f16 es el unicode "codificado" que codifica sbuilder.appendCodePoint (0x7801); // 0x7801 es el sistema de codificación unicode "codificado". }} Resultados de ejecución:
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
2.3 Reemplace las API relacionadas en StringBuilder
El código fuente es el siguiente (StringBuilderRePlaceTest.java):
/** * StringBuilder 的 reemplazar () 示例 * * @author Skywang */import java.util.hashmap; public class StringBuilderReplacetest {public static void main (string [] args) {testRepLacePis (); } / *** stringBuilder 的 reemplazar () 示例* / 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 (); }} Resultados de ejecución:
---------------------------
2.4 Delete (Eliminar) API relacionada en StringBuilder
El código fuente es el siguiente (StringBuilderDeletetest.java):
/** * StringBuilder 的 Delete () 示例 * * @author Skywang */import java.util.hashmap; public class StringBuilderdeletetetest {public static void main (string [] args) {testDelEdeapis (); } / *** StringBuilder 的 Delete () 示例* / Private static void testDelEdeapis () {System.out.println ("-------------------------------- Testdeléseapis -------------------------------"); StringBuilder sBuilder = new StringBuilder ("0123456789"); // Eliminar el carácter en la posición 0, el personaje restante es "123456789". sbuilder.deletecharat (0); // Eliminar caracteres entre la posición 3 (incluyendo) y la posición 6 (excluyendo), y los caracteres restantes son "123789". sbuilder.delete (3,6); // Obtener la cadena a partir de la posición 1 en SB String Str1 = SBuilder.Substring (1); // Obtenga la cadena de la posición 3 (incluyendo) a la posición 5 (excluyendo) en SB String Str2 = SBuilder.Substring (3, 5); // Obtener la cadena de la posición 3 (incluyendo) a la posición 5 (excluyendo) en SB String Str3 = (String) SBuilder.SubSequence (3, 5); System.out.printf ("sbuilder =%s/nstr1 =%s/nstr2 =%s/nstr3 =%s/n", sbuilder, str1, str2, str3); }} Resultados de ejecución:
---------------------------
2.5 API relacionada con el índice en StringBuilder
El código fuente es el siguiente (StringBuilderIndextest.java):
/** * demostración de API relacionada con el índice en StringBuilder * * @author Skywang */import java.util.hashmap; public class StringBuilderIndextest {public static void main (string [] args) {testIndexapis (); } / *** demostración de API relacionada con el índice en StringBuilder* / private static void testIndexapis () { System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- StringBuilder sbuilder = new StringBuilder ("ABCABCABCABCABCABCABC"); sbuilder.indexof ("bc"); aparece por primera vez System.out.printf (" %-30s = %d/n", "sbuilder.lastindexof (/" bc/")", sbuilder.lastindexof ("bc")); // 4. De vuelta a delantera, encuentre la ubicación donde aparece "BC" para la primera vez System.out.printf (" %-30s = %d/n", "sbuilder.lastindexof (/" bc/", 4)", sbuilder.lastindexof ("bc", 4)); System.out.println (); }} Resultados de ejecución:
-------------------------------
2.6 API restante de StringBuilder
El código fuente es el siguiente (StringBuilderTherTest.java):
/** * Otros ejemplos de API de StringBuilder * * @author Skywang */import java.util.hashmap; public class StringBuilderTherTest {public static void main (string [] args) {testotherapis (); } / *** Otros ejemplos de API de StringBuilder* / private static void testotherapis () { System.out.println ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- StringBuilder ("0123456789"); (int i = 0; i <Carr.length; i ++) System.out.printf ("Carr [%d] =%C", i, Carr [i]); Resultados de ejecución:
---------------------------
3. Ejemplo completo de StringBuilder
El siguiente ejemplo es un programa completo de demostración de StringBuilder que integra los ejemplos anteriores. El código fuente es el siguiente (StringBuilderTest.java):
/** * Programa de demostración de StringBuilder * * @author Skywang */import java.util.hashmap; public class StringBuilderTest {public static void main (string [] args) {testotherapis (); testIndexapis (); testInsertapis (); testAppendapis (); testReplaceapis (); testDelEteapis (); } / *** Otros ejemplos API de 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); para (int i = 0; i <carr.length; i ++) System.out.printf ("Carr [%d] =%C", i, Carr [i]); System.out.println (); System.out.println (); } / *** StringBuilder 中 中 相关 API 演示* / private static void testIndexapis () {System.out.println ("-------------------------------- TestIndexapis ------------------------------------"); StringBuilder sBuilder = new StringBuilder ("ABCABCABCABCABCABCABCABC"); System.out.printf ("sBuilder =%s/n", sbuilder); // 1. De adelante hacia atrás, encuentre la ubicación donde aparece "BC" para la primera vez System.out.printf (" %-30s = %d/n", "sbuilder.indexof (/" bc/")", sbuilder.indexof ("bc")); // 2. Desde la posición 5, de adelante hacia atrás, encuentre la ubicación donde "BC" aparece para la primera vez System.out.printf (" %-30s = %d/n", "sbuilder.indexof (/" bc/", 5)", sbuilder.indexof ("bc", 5)); // 3. De vuelta a delantera, encuentre la ubicación donde aparece "BC" para la primera vez System.out.printf (" %-30s = %d/n", "sbuilder.lastindexof (/" bc/")", sbuilder.lastindexof ("bc")); // 4. De vuelta a delantera, encuentre la ubicación donde aparece "BC" para la primera vez System.out.printf (" %-30s = %d/n", "sbuilder.lastindexof (/" bc/", 4)", sbuilder.lastindexof ("bc", 4)); System.out.println (); } / *** stringBuilder 的 reemplazar () 示例* / 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 () Ejemplo* / Private static void testDelEteapis () { System.out.println ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------- sbuilder.deletecharat (0); sbuilder.substring (3, 5); System.out.printf ("sbuilder =%s/nstr1 =%s/nstr2 =%s/nstr3 =%s/n", sbuilder, str1, str2, str3); } / *** stringBuilder insert () ejemplo* / private static void testInsertapis () { System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- 0 representa la posición inicial de la matriz de caracteres, 3 representa la longitud sbuilder. sbuilder.insert (0, verdadero); // insertar char sbuilder.insert (0, '/n'); // insertar int sbuilder.insert (0, 100); // insertar sbuilder long.insert (0, 12345l); // Inserte el objeto StringBuilder sBuilder.insert (0, nuevo StringBuilder ("StringBuilder")); // Insertar el objeto StringBuilder en la posición 0. 6 representa la posición de inicio (incluido) del objeto insertado en la posición 0, 13 es la posición final (excluyendo) sbuilder.insert (0, nuevo stringBuilder ("StringBuilder"), 6, 13); // Inserte el objeto StringBuffer en la posición 0. SBuilder.insert (0, nuevo StringBuffer ("StringBuffer")); // Inserte el objeto StringBuffer en la posición 0. 6 representa la posición de inicio (incluido) del objeto insertado en la posición 0, 12 es la posición final (excluyendo) sbuilder.insert (0, nueva stringbuffer ("stringbuffer"), 6, 12); // inserta el objeto de cadena en la posición 0. SBuilder.insert (0, "String"); // Inserte el objeto de cadena en la posición 0. 1 representa la posición de inicio (incluido) del objeto insertado en la posición 0, 6 es la posición final (excluyendo) sbuilder.insert (0, "0123456789", 1, 6); sbuilder.insert (0, '/n'); // Inserte el objeto Objeto en la posición 0. 此处以 Hashmap 为例 Hashmap MAP = new Hashmap (); map.put ("1", "one"); map.put ("2", "dos"); map.put ("3", "tres"); sbuilder.insert (0, mapa); System.out.printf ("%s/n/n", sbuilder); } / *** StringBuilder 的 append () 示例* / private static void testAppendapis () {System.out.println ("-------------------------------- TestAppendapis -----------------------------------"); StringBuilder sBuilder = new StringBuilder (); // Agregar la matriz de caracteres sbuilder.append (new Char [] {'a', 'b', 'c', 'd', 'e'}); // Agregar la matriz de personajes. 0 indica la posición inicial de la matriz de caracteres, 3 indica la longitud sbuilder.append (nueva char [] {'a', 'b', 'c', 'd', 'e'}, 0, 3); // Agregar float sbuilder.append (1.414f); // Agregar doble sbuilder.append (3.14159d); // Agregar boolean sbuilder.append (verdadero); // Append char sbuilder.append ('/n'); // Append int sbuilder.append (100); // agregar long sbuilder.append (12345l); // Append StringBuilder Object sbuilder.append (new StringBuilder ("StringBuilder")); // Agregar objeto StringBuilder. 6 indica la posición de inicio (que incluye) del objeto agregado, 13 es la posición final (excluyendo) sbuilder.append (nueva stringBuilder ("StringBuilder"), 6, 13); // Agregar objeto StringBuffer. sbuilder.append (new StringBuffer ("StringBuffer")); // Agregar objeto StringBuffer. 6 indica la posición inicial (que incluye) del objeto adjunto, 12 es la posición final (excluyendo) sbuilder.append (new StringBuffer ("StringBuffer"), 6, 12); // Agregar objeto de cadena. sbuilder.append ("cadena"); // Agregar objeto de cadena. 1 indica la posición de inicio (que incluye) del objeto adjunto, 6 es la posición final (excluyendo) sbuilder.append ("0123456789", 1, 6); sbuilder.append ('/n'); // Agregar objeto objeto. Aquí tomamos el hashmap como un ejemplo de mapa hashmap = new Hashmap (); map.put ("1", "one"); map.put ("2", "dos"); map.put ("3", "tres"); sbuilder.append (mapa); sbuilder.append ('/n'); // Agregar unicode codificando sbuilder.appendCodePoint (0x5b57); // 0x5b57 es el unicode que codifica sbuilder.appendCodePoint (0x7b26); // 0x7b26 es el unicode que codifica sbuilder.appendCodePoint (0x7f16); // 0x7f16 es el unicode "codificado" que codifica sbuilder.appendCodePoint (0x7801); // 0x7801 es el sistema de codificación unicode "codificado". }}