Avatar ·

¿Cuál es la diferencia entre == y equals() en Java?

¡Hola, colegas! Acabo de empezar a aprender Java y me encontré con una situación confusa al comparar strings. Escribí un código simple: ```java String a = "Hola"; String b = "Hola"; String c = new String("Hola"); System.out.println(a == b); // true System.out.println(a == c); // false System.out.println(a.equals(c)); // true ``` ¿Por qué `a == b` devuelve `true`, pero `a == c` devuelve `false`? ¿Y qué tiene que ver `equals()`? Pensé que ambos operadores comparan valores. ¿Cuál es el truco? Explíquenme, por favor, como a un principiante, cuándo usar `==` y cuándo `equals()`. Me interesa especialmente cómo funciona esto con strings y otros objetos. <<>>

Diferencia principal: comparación de referencias vs comparación de contenido

La diferencia clave entre == y equals() en Java radica en qué es lo que comparan:

  • == — es un operador de comparación de referencias. Verifica si dos variables apuntan al mismo objeto en memoria.
  • equals() — es un método que compara el contenido o valor de los objetos (dependiendo de cómo esté implementado en la clase).