Los ejemplos de este artículo resumen el uso de cadenas en Java. Compártelo con todos para tu referencia. El análisis específico es el siguiente:
La esencia de una cadena es una matriz de tipo char, pero en Java, todas las cadenas declaradas entre comillas dobles "" son objetos de la clase String. Esto también refleja las características del lenguaje Java, completamente orientado a objetos.
clase de cadena
1. El objeto de clase String representa una cadena constante. Es de longitud inmutable. En otras palabras, una vez que se crea una instancia de la clase String, la cadena representada por esta instancia no se puede cambiar. Similar a
cadena = cadena + "Hola";
Básicamente, esta operación crea un nuevo objeto String combinando los dos objetos String str y "Hello", y luego asigna la referencia del nuevo objeto String a str. El uso extensivo de esta operación puede causar fallas de rendimiento. Si necesita cambiar el contenido de la cadena con frecuencia, debe utilizar la clase StringBuffer o la clase StringBuilder. Podemos usar un pequeño programa para ver qué tan grande es la diferencia de rendimiento entre las clases String y StringBuffer.
class StringTest { public static void main(String[] args) { /** * Realizar 10,000 operaciones de adición usando objetos String y objetos StringBuffer respectivamente * Tiempo de ejecución de prueba * 2013.3.18 */ String constStr = ""; long lTime = System . currentTimeMillis(); para(int i = 0; i < 10000; ++i) constStr += i; System.out.println("Const String:"+(System.currentTimeMillis()-lTime)); StringBuilder strBuf = new StringBuilder(""); lTime = System.currentTimeMillis(); 10000 ; ++i) strBuf.append(String.valueOf(i)); System.out.println("En búfer Cadena: "+(System.currentTimeMillis()-lTime)); } }Resultado de la ejecución:
Se puede ver que StringBuilder tarda unos segundos, pero la clase String tarda 300 ms, lo que muestra la enorme diferencia de rendimiento.
Tanto StringBuilder como StringBuffered representan un objeto de cadena de longitud variable (mutable). La diferencia entre ellos es que la clase StringBuffered realiza un procesamiento seguro en términos de sincronización de subprocesos, mientras que StringBuilder hace lo contrario. Entonces, si solo estás programando en una sola línea, StringBuilder es un poco más eficiente que StringBuffered (en realidad, la diferencia no es grande)
2. "Hello World" es un objeto String. Podemos usar "Hello World" directamente como un objeto, como por ejemplo:
if("Hola".equals("Hola")) System.out.println("Sí");El resultado de salida es Sí.
3. Al comparar objetos de cadena, debe usar el método igual () en lugar de simplemente usar == para juzgar. Debido a que == compara si las instancias a las que hacen referencia dos nombres de referencia son las mismas, el método igual () compara si las cadenas en los dos objetos son iguales.
Una pregunta común es: ¿cuántos objetos String genera en total el siguiente fragmento de código?
Cadena str1 = nueva Cadena ("Hola"); Cadena str2 = nueva Cadena ("Hola");Probablemente la mayoría de la gente responderá, 2. Pero, de hecho, aquí se generan un total de 3 objetos String. Además de str1 y str2, no olvide que "Hola" también es un objeto String.
4. Grupo de cuerdas (piscina)
Java mantiene un grupo de cadenas durante la ejecución. Cuando aparece una cadena declarada entre comillas dobles, la JVM primero verificará si el mismo objeto String (con los mismos caracteres) existe en la memoria. Si existe, devolverá una referencia al objeto que ya existe en la memoria. no existe, lo creará un nuevo objeto String. Esto ahorra memoria. Como se muestra en el siguiente código, str1 y str2 en realidad apuntan al mismo objeto String.
Cadena str1 = "Hola"; Cadena str2 = "Hola";
5. Recibir parámetros de la línea de comando
Cuando declaramos el método principal, declaramos un parámetro formal de tipo String[]. Esta matriz de objetos String almacena los parámetros de la línea de comando pasados por el usuario al ejecutar este programa. Tenga en cuenta que, a diferencia del lenguaje C, los parámetros de la línea de comandos en Java comienzan desde la primera variable después del nombre del programa. En otras palabras, los datos de String[] no incluyen el nombre de la aplicación. Por ejemplo:
clase strCmd { public static void main(String[] args) { if(args.length > 0) { for(String str: args) System.out.println(str);El resultado al ejecutar java strCmd ¡Hola Mundo! es:
6. Separación de cuerdas
Similar a strtok en lenguaje C, la clase String también tiene un método de división que puede separar una cadena en un formato específico. El método split devuelve una matriz de objetos String, que representan cada cadena separada. como:
class strSplit { public static void main(String[] args) { String str = "Hola/tWorld/tI/tLove/tYou!" System.out.println("Cadena original: " + str); str.split("/t"); for(String s: strArr) System.out.println(s);Entre ellos, los parámetros del método split() pueden ser expresiones regulares. Puede utilizar el método estáticomatches() de la clase Matcher en el paquete java.util para determinar si una cadena coincide con una expresión regular.
La clase String tiene muchas otras funciones poderosas y deberíamos aprender a leer la documentación de la API. Aquí se refleja la importancia del inglés...
Espero que este artículo sea útil para la programación Java de todos.