Contenido del Curso
Fundamentos de Java
Fundamentos de Java
Pool de Cadenas, Método Equals()
El método equals()
Este capítulo proporciona una breve descripción general del método equals()
. Este método se utiliza para comparar objetos y es comúnmente usado con objetos de tipo String. Examinemos un ejemplo de creación de dos variables de cadena idénticas y su comparación utilizando ==
:
Main
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }
En la respuesta, obtenemos "false", ¿pero por qué? Los valores de las dos variables de cadena son iguales y ambos son "string". Esto se debe a que ==
compara las referencias a los objetos en memoria, no los valores reales. Nuestros objetos están fuera del String pool.
String pool
¿Qué es el String Pool? Es un área en la memoria heap que se asigna al crear objetos de tipo String. Si creamos un objeto String con el valor "string" y luego creamos otro objeto String con el mismo valor, ambos objetos harán referencia al mismo objeto en memoria, que se encuentra en el string pool.
Entonces, ¿por qué obtuvimos "false" en nuestro caso? Es porque evitamos el string pool al crear objetos utilizando la sintaxis String first = new String("string");
. Cuando creamos un objeto String utilizando una sintaxis diferente, como String first = "string";
, este se ubicará en el string pool.
Consideremos un ejemplo de código:
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }
Consideremos un diagrama que explica cómo funciona y qué objetos se encuentran en el String Pool
.
¿Cómo se comparan los valores de las cadenas en el String Pool y las que están fuera de él? Para este propósito, Java proporciona el método equals
, que compara los valores de nuestros objetos String
en lugar de sus referencias. Consideremos un ejemplo de código donde comparamos cadenas utilizando el método equals
en lugar de ==
.
Main
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }
Ahora podemos ver que tenemos la comparación correcta.
¡Gracias por tus comentarios!