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