La diferencia entre cadenas, búferes de cadenas y constructores de cadenas
Pero en algunos casos:
Código Java
Cadena S1 = "¿Quién" + "es" + "más rápido?"; >StringBuffer Stb = new StringBuilder("Who").append(" is")."Faster?"
Código Java
String S1 = "Who" + " is); " + " ¿más rápido?";
StringBuffer Stb = new StringBuilder("Who").append(" es ").append(" más rápido?");
El motivo el par S1 es mucho más rápido que Stb porque la JVM interpreta la concatenación de objetos String como la concatenación de objetos StringBuffer. En la JVM, la concatenación es:
Código Java
. String S1 ="¿Quién es más rápido?String s1="¿Quién";
String s2=" es";
String s3=" más rápido?";
String st=s1+s2+s3;
Código Java
Cadena s1="Quién"
Cadena s2=" es"; >
String s3=" ¿más rápido?";
String st=s1+s2+s3
Esta vez, String no es más rápido que StringBuffer
StringBuffer y StringBuilder
Al operar objetos de cadena, StringBuiler es el más rápido, StringBuffer es el segundo y String es el más lento.
Código Java
Clase final pública StringBuffer
extiende AbstractStringBuilder
implementa java.io CharSequence
public. clase final StringBuilder
extiende AbstractStringBuilder
implementa java.io CharSequence
clase final pública StringBuilder
extiende AbstractStringBuilder
implementa java.io.io. CharSequence
código Java
clase final pública StringBuffer
extiende AbstractStringBuilder
implementa java.io. .Serializable, CharSequence
Código Java io. Serializable, CharSequence
Clase final pública StringBuilder
extiende AbstractStringBuilder
implementa java.io. Serializable, CharSequence
Puedes ver que tanto StringBuffer como StringBuilder heredan la misma clase abstracta.
Java.lang.StringBuffer secuencia de caracteres mutables segura para subprocesos. Los buffers de cadenas son similares a las cadenas, pero no se pueden modificar. Aunque contiene una secuencia específica de caracteres en cualquier momento, la longitud y el contenido de la secuencia se pueden cambiar mediante ciertas llamadas a métodos.
Los buffers de cadenas son seguros de usar en múltiples subprocesos. Estos métodos se pueden sincronizar según sea necesario, por lo que todas las operaciones en cualquier instancia particular se producirán en un orden en serie coherente con el orden en que cada subproceso relevante llama a los métodos.
Cada buffer de cadena tiene una capacidad determinada. Siempre que la secuencia de caracteres contenida en el búfer de cadena no exceda esta capacidad, no es necesario asignar una nueva matriz de búfer interna. Si el buffer interno se desborda, la capacidad aumenta automáticamente.
Las operaciones principales en StringBuffer son los métodos anexar e insertar, que pueden anularse para aceptar cualquier tipo de datos. Cada método convierte efectivamente los datos proporcionados en una cadena y luego agrega o inserta los caracteres de la cadena en un búfer de cadena. Agregar siempre agrega estos caracteres al final del búfer; insertar agrega caracteres a la posición especificada.