Para comparar dos cadenas en Java debes saber lo siguiente. Al usar
== pruebas si dos objetos tienen la misma referencia. Y al usar
.equals() pruebas si los valores de las cadenas son iguales.
Por ejemplo:
String ejString1 = new String("ejemplo");
String ejString2 = new String("ejemplo");
// Retornará falso
ejString1 == ejString2;
// Retornará verdadero
ejString1.equals(ejString2);
// Retornará verdadero, porque Java usa el mismo objeto.
"ejemplo" == "ejemplo";
Pero ten cuidado al comparar cadenas con valores null. En tal caso, el == manejará adecuadamente las cadenas con valores
null, peroo llamando al método
.equals() desde una cadena null causará una excepción.
String nullString1 = null;
String nullString2 = null;
//Retorna verdadero
nullString1 = nullString2;
//Lanza una exepción
nullString1.equals(nullString2);
Cuando se trabaja con cadenas concatenadas y se compara en tiempo de compilación, la comparación resulta en los mismos objetos.
// retorna true
"prueba" == "pru" +"eba";
Sin embargo si se invoca a un método como
.substring() en tiempo de ejecución se generan objetos distintos:
//retornará false
"prueba" == "!prueba".substring(1)