Ruby (Rails), Java, JavaScript, PostgreSQL, Cloud, Ubuntu :)

Comparar cadenas en Java: == o .equals()

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)