Red de conocimiento informático - Aprendizaje de programación - ¿La cadena de Java es una cadena?

¿La cadena de Java es una cadena?

La clase de cadena Ava (java.lang.String) es la clase más utilizada en Java y también la clase más especial. Muchas veces nos resulta familiar y desconocido.

Primero, comprenda fundamentalmente la clase java.lang.String y el grupo de cadenas.

En primer lugar, sugiero echar un vistazo a la implementación del código fuente de la clase String. Este es el punto de partida fundamental para comprender la clase String en esencia. Se puede ver que:

1 y las clases String son finales y no se pueden heredar. Clase pública final String.

2. La esencia de la clase String es la matriz de caracteres char[] y su valor no se puede cambiar. Valor de carácter final privado [];

Luego abra el documento API de la clase String, podrá encontrar:

3. es especificar directamente String x = "abc", "abc" es un objeto String. x es la dirección del objeto "abc", también conocido como .

Hace referencia al objeto "abc".

4. Los objetos de cadena se pueden conectar con " ". Después de la concatenación, se generará una nueva cadena. La concatenación también se puede realizar mediante concat(), que se presentará más adelante.

6. El tiempo de ejecución de Java mantendrá un grupo de cadenas (la traducción de String JavaDoc es muy vaga en cuanto al "área de búfer de cadenas"). El grupo de cadenas se utiliza para almacenar varias cadenas generadas durante el tiempo de ejecución.

Y el contenido de la cadena en el grupo no se repetirá. Pero este grupo de búfer no existe para objetos generales y los objetos creados solo existen en el área de pila del método.

5. Hay muchas formas de crear cadenas, que se pueden resumir en tres categorías:

Primero cree una cadena usando la nueva palabra clave, como String s 1 = new String( " ABC ");

En segundo lugar, especifique directamente. Por ejemplo, cadena s2 = "abc"

En tercer lugar, utilice la concatenación para generar una nueva cadena. Por ejemplo, cadena S3 = "ab" "c";

En segundo lugar, cree la. objeto String de carácter

La creación del objeto String también es muy particular. La clave es comprender su principio

Principio 1: cuando se crea un objeto String S de cualquier forma. se ejecuta. Cuando (ejecutando JVM), usará esto en el grupo.

Principio 2: en Java, siempre que use la nueva palabra clave para crear un objeto, se creará un nuevo objeto (en).

Principio 3: Si un objeto de cadena se crea mediante especificación directa o concatenación de cadenas pura, solo se verifica y mantiene la cadena en el grupo de cadenas si no hay ninguna cadena en él.

¡Sí! Pero nunca crearás un objeto String en el área de la pila.

Principio 4: Crea una cadena. el uso de una expresión que contiene variables. Object no solo verificará y mantendrá el grupo de cadenas, sino que también creará un objeto de cadena en el área de la pila.

Además, el método intern() de String es un método local. , definido como público nativo String intern(); El valor del método intern() es permitir a los desarrolladores centrarse en el grupo de cadenas cuando llaman al método interno si el grupo ya contiene una cadena igual a este objeto String (determinado por los iguales). (Objeto)), se devuelve la cadena. De lo contrario, el objeto de cadena se agrega al grupo y se devuelve una referencia al objeto de cadena.

En tercer lugar, clases inmutables

Las cadenas inmutables tienen una gran ventaja: el compilador puede establecer la cadena en * * *.

Los objetos inmutables tipo cadena tienen una ventaja importante: no se pueden * * * * citar.

Bueno, para mejorar la eficiencia, JAVA ha realizado un procesamiento especial para el tipo de cadena, proporcionando un grupo de cadenas para el tipo de cadena.

Hay dos formas de definir variables de tipo cadena:

nombre de cadena = " tom

nombre de cadena = nueva cadena ("tom")

Cuando use el primer método, use un grupo de cadenas.

Cuando use el segundo método, este es un método de declaración de objetos normal p>Si usa el primer método, cuando declara una cadena. cuyo contenido también es "tom", utilizará la memoria original en el grupo de cadenas sin reasignar la memoria, es decir, la cadena saname = "tom" apuntará a la misma memoria.

Otra pregunta sobre. La inmutabilidad del tipo de cadena es:

El tipo de cadena es inmutable, es decir, cuando desea cambiar un objeto de cadena, como nombre = "madding".

Entonces el virtual. La máquina no cambiará el objeto original, pero generará un nuevo objeto de cadena y luego dejará que el nombre apunte a él si no hay ningún objeto al que hacer referencia, luego el mecanismo de recolección de basura de la máquina virtual lo recibirá

<. p>¡Se dice que esto puede mejorar la eficiencia!