Ayuda convirtiendo tipos
Hola, tengo problemas cuando comparo dos cadenas de texto, siendo una de ellas una conversion de un entero.
Por ejemplo:
String n = "10";
if( n = String.valueOf(10))
{
...
}
Cuando compara parece como si fueran distintas. He hecho trazas y en teoria salen las mismas cadenas, pero no lo interpreta como iguales. ¿Hay que hacerlo de otra forma? ¿De cual?
Es muy importante, muchas gracias.
Por ejemplo:
String n = "10";
if( n = String.valueOf(10))
{
...
}
Cuando compara parece como si fueran distintas. He hecho trazas y en teoria salen las mismas cadenas, pero no lo interpreta como iguales. ¿Hay que hacerlo de otra forma? ¿De cual?
Es muy importante, muchas gracias.
Hola,...
Varias cosas. Para comparar nunca podrás usar el sÃmbolo dedicado a la asignación "=". Si quieres comparar variables que contienen referencias a objetos entonces tendrás que usar el operador .equals() para comparar los valores propiamente dichos. Si usas "==" estarás comparando las referencias en sÃ.
Por otro lado debes tener en cuenta que String es una clase "inmutable", de modo que...
String s1= new String("100");
String s2=new String("100");
if (s1!=s2){
System.out.println("Referencias distintas");
}else{
System.out.println("Referencias iguales");
}
Devuelve "Referencias distintas";
String s3="100";
String s4="100";
if (s3!=s4){
System.out.println("Referencias distintas");
}else{
System.out.println("Referencias iguales");
}
Devuelve "Referencias iguales";
En tiempo de compilación se detecta que s3 y s4 se inicializan al mismo valor, de modo que se crea un único objeto y se devuelve la misma referencia.
Para resolver tu problema basta con hacer...
String num1="10";
if(num1.equals(String.valueOf(10))){
System.out.println("Iguales");
}else{
System.out.println("Distintos");
}
Devolverá "Iguales"
Espero que te sirva. Un saludo.
Varias cosas. Para comparar nunca podrás usar el sÃmbolo dedicado a la asignación "=". Si quieres comparar variables que contienen referencias a objetos entonces tendrás que usar el operador .equals() para comparar los valores propiamente dichos. Si usas "==" estarás comparando las referencias en sÃ.
Por otro lado debes tener en cuenta que String es una clase "inmutable", de modo que...
String s1= new String("100");
String s2=new String("100");
if (s1!=s2){
System.out.println("Referencias distintas");
}else{
System.out.println("Referencias iguales");
}
Devuelve "Referencias distintas";
String s3="100";
String s4="100";
if (s3!=s4){
System.out.println("Referencias distintas");
}else{
System.out.println("Referencias iguales");
}
Devuelve "Referencias iguales";
En tiempo de compilación se detecta que s3 y s4 se inicializan al mismo valor, de modo que se crea un único objeto y se devuelve la misma referencia.
Para resolver tu problema basta con hacer...
String num1="10";
if(num1.equals(String.valueOf(10))){
System.out.println("Iguales");
}else{
System.out.println("Distintos");
}
Devolverá "Iguales"
Espero que te sirva. Un saludo.