Si creo dos Strings con el mismo contenido y los comparo con "==" da true. Sin embargo si construyo dos objetos con concatenando " " (comillas) con los valores de un arreglo da false. La salida del programa abajo da false, false , true. Pregunta: porqué dos String con mismo contenido dan true si se comparan con == y dos String construidos con " "(comillas) concatenados con valores idénticos de dos arrays dan false si se comparan con ==. Por motivos didácticos no quiero compararlos con equals, o compareTo o cualquier otro método de comparación.
package utiles;
public class Test1 {
static int dim=5;
public static void main(String[] args) {
// TODO Auto-generated method stub
String a="dos";
String b="dos";
int[]m1= {2, 3, 4, 6};
int[]m2= {2, 3, 4, 6};
System.out.print((m1==m2)+ " dos arrays con mismo contenido da false si se comparan con '=='\n");
System.out.println(Test1.esArrayIgual(m1, m2)+" dos String construidos a partir de array con mismo contenido"
+ " da false si se comparan con '=='\n");
System.out.println((a==b) +" dos String con mismo contenido da true si se comparan con ==");
}
public static boolean esArrayIgual(int[] obj1, int[] obj2) {
String str1="";
String str2="";
for(int i=0; i<obj1.length; i++) {
str1+=obj1[i];}
for(int i=0; i<obj2.length; i++) {
str2+=obj2[i];}
if(str2==str1) return true;
//System.out.println(str1.compareTo(str2));
return false;
}
}