estaba trabajando en el programa básico de Java y encontré algo realmente divertido que estoy compartiendo contigo. foo() da salida (s == s1) = falso y la barra da (s == s1) = verdadero.¿Por qué obtengo resultados diferentes al comparar cadenas después de usar una concatenación diferente en Java?
Quiero saber por qué sucede esto.
public class StringTest
{
public static void main(String[] args){
foo();
bar();
}
public static void foo(){
String s = "str4";
String s1 = "str" + s.length();
System.out.println("(s==s1) = " + (s1==s));
}
public static void bar(){
String s = "str4";
String s1 = "str" + "4";
System.out.println("(s==s1) = " + (s1==s));
}
}
Si está tratando de comparar valores de cadena, debería estar haciendo ['equals'] (http: // downlo ad.oracle.com/javase/6/docs/api/java/lang/String.html#equals(java.lang.Object)) – asgs
Nota: las etiquetas HTML no funcionan aquí para formatear el código. – Jesper
Me pregunto cómo los errores humanos se relacionan con este problema ...;) – Nix