Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/02/2013, 22:32
Avatar de ipraetoriux
ipraetoriux
 
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: porque me da error cuando comparo en este ejemplo

...pues comparar String en Java parece una tontera pero trae dolores de cabeza a mas de uno. Es un error en Java utilizar operadores relacionales (== o !=) para comparar String...porque?...recuerda que un String en Java es un OBJETO...no es un tipo de dato primitivo. Por la tanto, cadena1 y cadena2 almacenan la dirección de memoria donde se encuentra el objeto, en este caso un String...por eso se les llama variables de referencia...porque hacen referencia a un direccion de memoria donde se encuentra un objeto. Entonces si tu comparas cadena1 == cadena2, lo que estas haciendo en realidad es comparar si las direcciones de memoria son iguales...no estas comparado los String...para comparar los String debes usar métodos...

Tienes 3 formas de comparar Strings:

La primera, usando equals();

Código JAVA:
Ver original
  1. if(cadena1.equals(cadena2)){
  2. // son iguales
  3. }else{
  4. // no son iguales
  5. }

La segunda forma, usando CompareTo()

Código JAVA:
Ver original
  1. if (cadena1.compareTo(cadena2) == 0){
  2.  
  3. // cadena1 y cadena2 son iguales
  4.  
  5. }else if (cadena1.compareTo(cadena2) < 0){
  6.  
  7. //cadena1 va antes que cadena2
  8.  
  9. }else if (cadena1.compareTo(cadena2) > 0){
  10.  
  11. //cadena2 va después que cadena1
  12. }

Y luego tienes Collator, pero es algo mas complicado de usar, te recomiendo las dos anteriores....