Contenido del Curso
Principios Básicos de Java
Principios Básicos de Java
Conjunto de Strings, Método Equals()
El Método equals()
Este capítulo proporciona una breve visión general del método equals()
. Este método se utiliza para comparar objetos y se usa comúnmente con objetos String. Examinemos un ejemplo en el que se crean dos variables de string idénticas y se comparan 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 string son iguales e iguales a "string". Es porque "==" compara las referencias a los objetos en memoria, no los valores reales. Nuestros objetos están fuera del string pool.
String Pool
Es un área en la memoria heap que se asigna cuando se crean objetos 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é hemos obtenido "false" en nuestro caso? Porque nos hemos saltado la reserva de strings al crear objetos utilizando la sintaxis
String first = new String("string");
. Cuando creamos un objeto String utilizando una sintaxis diferente, como String first = "string";
, se colocará en la reserva de strings.
Veamos 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)); } }
Veamos un diagrama que explica cómo funciona y qué objetos hay en el String Pool
.
¿Cómo se comparan los valores de las strings que se encuentran en el String Pool y las que están fuera de él? Para ello, Java proporciona el método equals
, que compara los valores de nuestros objetos String
en lugar de sus referencias. Veamos un ejemplo de código en el que comparamos strings 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.
Nota
Utiliza el método
equals()
en lugar de==
cuando trabajes conString
.
¡Gracias por tus comentarios!