/ / Perché queste due matrici non sono uguali? [duplicato] - java, array, uguale

Perché questi due array non sono uguali? [duplicato] - java, matrici, uguale

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 № 1

Il 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.