Sobes.tech
Junior

¿Para qué sirve el String Pool en Java?

sobes.tech AI

Respuesta de la IA

String Pool en Java es necesario para:

  • Ahorro de memoria: Previene la creación de duplicados de literales de cadenas. Si una cadena con el mismo valor ya existe en el pool, se usa una referencia a ella.
  • Optimización del rendimiento: La comparación de literales de cadenas (==) se vuelve rápida, ya que se comparan referencias, no el contenido de las cadenas.

Al crear literales de cadenas (String s = "hello";), la JVM primero verifica el String Pool. Si "hello" ya existe, s hace referencia al objeto existente. Si no, se crea un nuevo objeto "hello" en el pool, y s hace referencia a él.

El uso del constructor new String("hello") siempre crea un nuevo objeto String en el heap, independientemente del String Pool. Para colocarlo en el pool, es necesario llamar al método intern().

// Ejemplo de funcionamiento del String Pool

String s1 = "hello"; // Verifica el String Pool, crea si es necesario, hace referencia al pool
String s2 = "hello"; // Verifica el String Pool, encuentra el existente, también hace referencia al pool

System.out.println(s1 == s2); // true - las referencias son iguales

String s3 = new String("hello"); // Crea un nuevo objeto en el heap

System.out.println(s1 == s3); // false - las referencias son diferentes

String s4 = s3.intern(); // Verifica el String Pool para el contenido de s3.
                         // Dado que "hello" ya está en el pool (de s1/s2),
                         // s4 hace referencia al objeto en el pool.

System.out.println(s1 == s4); // true - s1 y s4 hacen referencia al mismo objeto en el pool