Pool de Cadenas y el Método equals()
Desliza para mostrar el menú
El método equals()
Este método se utiliza para comparar objetos y es comúnmente usado con objetos String. Veamos un ejemplo de cómo crear dos variables de cadena idénticas y compararlas usando ==:
Main.java
123456789package 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); } }
El resultado es false porque == compara las referencias de los objetos, no sus valores reales. Aunque ambas cadenas contienen "string", son objetos diferentes en memoria y se crean fuera del String pool.
String pool
El String Pool es una parte de la memoria heap donde se almacenan los literales de cadena. Cuando creas cadenas con el mismo valor usando literales, hacen referencia al mismo objeto en memoria.
¿Entonces por qué obtuvimos false? Porque evitamos el string pool al usar new String("string"), lo que crea un nuevo objeto en memoria. Al usar String first = "string";, la cadena se coloca en el string pool y puede ser compartida.
Veamos un ejemplo de código:
Main.java
1234567891011package 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 están en el String Pool.
¿Cómo comparamos los valores de las cadenas en el String Pool y aquellas 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 usando el método equals en lugar de ==.
Main.java
1234567891011package 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.
Utilizar el método equals() en lugar de == al trabajar con String.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla