public static void main(String[] args)
{
char [] d = {"a","b","c","d"};
char [] e = {"d","c","b","a"};
Arrays.sort(d);
Arrays.sort(e);
System.out.println(e); //console : abcd
System.out.println(d); //console : abcd
System.out.println(d.equals(e)); //console : false
}
Perché le matrici sono disuguali? Probabilmente mi manca qualcosa, ma mi sta facendo impazzire. Il risultato non dovrebbe essere vero? E sì, ho importato java.util.Arrays.
risposte:
15 per risposta № 1Il risultato non dovrebbe essere vero?
No. Stai chiamando equals
su due diversi riferimenti di array. Le matrici non hanno la precedenza equals
, quindi ottieni uguaglianza di riferimento. I riferimenti non sono uguali, quindi restituisce false ...
Per confrontare i valori nelle matrici, utilizzare Arrays.equals(char[], char[])
.
System.out.println(Arrays.equals(d, e));
11 per risposta № 2
Le matrici lo fanno non oltrepassare Object#equals()
. Uso:
Arrays.equals(d, e);
invece di eseguire un confronto basato sul valore.
Però:
Arrays.equals
fa non funziona come previsto per le matrici multidimensionali. Confronterà i riferimenti del primo livello di array invece di confrontare tutti i livelli. Fare riferimento a questo commento, o usare Arrays.deepEquals
Allo stesso modo.