Los objetos de cadena son inmutables. Cada vez que usa uno de los métodos en la clase System.String, debe crear un nuevo objeto de cadena en la memoria, que requiere asignar un nuevo espacio para el nuevo objeto. La sobrecarga del sistema asociada con la creación de un nuevo objeto de cadena puede ser muy costoso en situaciones en las que se requieren modificaciones repetidas en la cadena. Si desea modificar una cadena sin crear un nuevo objeto, puede usar la clase System.Text.StringBuilder. Por ejemplo, el uso de la clase StringBuilder puede mejorar el rendimiento al concatenar muchas cadenas juntas en un bucle.
Al inicializar la variable con un método de constructor sobrecargado, se puede crear una nueva instancia de la clase StringBuilder, como se explica en el siguiente ejemplo.
StringBuilder myStringBuilder = new StringBuilder ("¡Hola mundo!");(I) establecer capacidad y longitud
Aunque el objeto StringBuilder es un objeto dinámico que permite el número de caracteres en la cadena que encapsula, puede especificar un valor para el número máximo de caracteres que puede tener. Este valor se denomina capacidad del objeto y no debe confundirse con la longitud de la cadena que el objeto StringBuilder actual contiene. Por ejemplo, puede crear una nueva instancia de la clase StringBuilder con la cadena "Hello" (Longitud 5), al tiempo que especifica que la capacidad máxima del objeto es 25. Cuando se modifica un StringBuilder, no reasigna espacio para sí mismo hasta que se alcanza la capacidad. Cuando se alcanza la capacidad, se asignará automáticamente el nuevo espacio y la capacidad se duplicará. Puede usar uno de los constructores sobrecargados para especificar la capacidad de la clase StringBuilder. El siguiente ejemplo de código especifica que el objeto MyStringBuilder se puede ampliar a un máximo de 25 espacios en blanco.
StringBuilderMystringBuilder = new StringBuilder ("¡Hola mundo!", 25); Además, la longitud máxima del objeto se puede establecer utilizando la propiedad de capacidad de lectura/escritura. El siguiente ejemplo de código utiliza la propiedad de capacidad para definir la longitud máxima de un objeto.
MyStringBuilder.capacity = 25;
(Ii) Lo siguiente enumera varios métodos comunes de este tipo:
(1) El método Append se puede usar para agregar una representación de cadena de un texto u objeto al final de una cadena representada por el objeto StringBuilder actual. El siguiente ejemplo inicializa un objeto StringBuilder a "Hello World" y luego agrega algún texto al final del objeto. El espacio se asignará automáticamente según sea necesario.
StringBuilderMystringBuilder = new StringBuilder ("¡Hola mundo!"); MyStringBuilder.append ("Qué hermoso día"); console.writeLine (myStringBuilder);¡Este ejemplo muestra Hello World! Qué día abeuoso. a la consola.
(2) El método AppEdformat agrega texto al final de StringBuilder e implementa la interfaz iformattable, por lo que puede aceptar las cadenas de formato estándar descritas en la sección de formato. Puede usar este método para personalizar el formato de la variable y agregar estos valores a la parte posterior de StringBuilder. El siguiente ejemplo utiliza el método AppEdFormat para colocar un valor entero establecido en el formato de valor de moneda al final de StringBuilder.
int myInt = 25; StringBuilder myStringBuilder = new StringBuilder ("Tu total es"); myStringBuilder.AppEdFormat ("{0: c}", myInt); console.writeLine (myStringBuilder);Este ejemplo muestra que su total es de $ 25.00 a la consola.
(3) El método de inserción agrega una cadena u objeto a la posición especificada en el StringBuilder actual. El siguiente ejemplo utiliza este método para insertar una palabra en la sexta posición del StringBuilder.
StringBuilderMystringBuilder = new StringBuilder ("¡Hola mundo!"); MyStringBuilder.insert (6, "Beautiful"); Console.WriteLine (MyStringBuilder);¡Este ejemplo muestra Hello BeautifulWorld! a la consola.
(4) Puede usar el método eliminar para eliminar un número especificado de caracteres del StringBuilder actual, y el proceso de eliminación comienza desde el índice especificado que comienza desde cero. El siguiente ejemplo utiliza el método eliminar para acortar el StringBuilder.
StringBuilderMystringBuilder = new StringBuilder ("¡Hola mundo!"); MyStringBuilder.remove (5,7); console.writeLine (myStringBuilder);Este ejemplo muestra hola a la consola.
(5) Usando el método Reemplazar, puede reemplazar los caracteres en el objeto StringBuilder con otro carácter especificado. El siguiente ejemplo utiliza el método Reemplazar para buscar objetos StringBuilder, encontrar todos los caracteres de marca de exclamación (!) Y reemplazarlos con caracteres de marca de interrogación (?).
StringBuilderMystringBuilder = new StringBuilder ("¡Hola mundo!"); MyStringBuilder.replace ('!', '?'); Console.WriteLine (myStringBuilder);¿Este ejemplo muestra Hello World? a la consola
getSqlMapClientTemplate (). QueryForList ((new StringBuilder ()). Append (EntityClass.getName ()). Append (". Select"). ToString (), NULL);Clase de Java's StringBuilder
Si el programa tiene una necesidad frecuente de cadenas adicionales, no se recomienda usar + para la concatenación de cadenas. Puede considerar usar la clase java.lang.stringbuilder. Los objetos generados mediante el uso de esta clase tendrán una longitud de 16 caracteres de forma predeterminada. También puede especificar la longitud inicial usted mismo. Si los caracteres adjuntos exceden la longitud acomodable, el objeto StringBuilder aumenta automáticamente la longitud para acomodar los caracteres adjuntos. Si es necesario adjuntar frecuentemente cadenas, usar la clase StringBuilder puede mejorar en gran medida la eficiencia. El siguiente código:
Código Java
public class AppendStringTest {public static void main (string [] args) {String text = ""; largo BegiNtime = System.CurrentTimemillis (); para (int i = 0; i <10000; i ++) text = text+i; Long Time = System.CurrentTimemillis (); System.out.println ("Tiempo de ejecución:" +(EndTime-BeGintime)); StringBuilder sb = new StringBuilder (""); BegIntime = System.CurrentTimemillis (); para (int i = 0; i <10000; i ++) sb.append (string.valueOf (i)); EndTime = System.CurrentTimemillis (); System.out.println ("Tiempo de ejecución:" +(EndTime-BeGintime)); }} clase pública AppendSTringTest {public static void main (string [] args) {string text = ""; largo BegiNtime = System.CurrentTimemillis (); para (int i = 0; i <10000; i ++) text = text+i; Long Time = System.CurrentTimemillis (); System.out.println ("Tiempo de ejecución:"+(EndTime-BeGintime)); StringBuilder sb = new StringBuilder (""); BegIntime = System.CurrentTimemillis (); para (int i = 0; i <10000; i ++) sb.append (string.valueOf (i)); EndTime = System.CurrentTimemillis (); System.out.println ("Tiempo de ejecución:"+(EndTime-BeGintime)); }}Este código sale:
Tiempo de ejecución: 3188
Tiempo de ejecución: 15
StringBuilder es una nueva clase que se agregó solo a J2SE1.5.0. Si la versión anterior tenía los mismos requisitos, se utilizará java.util.stringbuffer. De hecho, StringBuilder está diseñado para tener la misma interfaz operativa que StringBuffer. El uso de StringBuilder en una situación independiente sin hilo tendrá una mejor eficiencia porque StringBuilder no maneja los problemas de sincronización. StringBuffer manejará problemas de sincronización. Si StringBuilder se operará en múltiples hilos, debe usar StringBuffer para dejar que el objeto administre los problemas de sincronización por sí solo.
El breve análisis anterior del uso de StringBuilder en Java es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.