103 votes

Comparez deux tableaux d'octets? (Java)

J'ai un tableau d'octets avec une séquence binaire ~ connue. Je dois confirmer que la séquence binaire est ce qu'elle est supposée être. J'ai essayé '.equals' en plus de '==', mais ni l'un ni l'autre n'a fonctionné.

 byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
    System.out.println("the same");
}else{
    System.out.println("different'");
}
 

175voto

Brian Roach Points 43787

Dans votre exemple, vous avez:

if (new BigInteger("1111000011110001", 2).toByteArray() == array)

Lorsque vous traitez avec des objets, == en java compare les valeurs de référence. Vous êtes de la vérification pour voir si la référence du tableau retourné par toByteArray() est le même que le lieu de référence en array, ce qui bien sûr ne peut jamais être vrai. En outre, la matrice de classes ne pas surcharger .equals() si le comportement est celui d' Object.equals() qui seulement compare les valeurs de référence.

Pour comparer le contenu de deux tableaux, tableau statique méthodes de comparaison sont fournies par les Tableaux de la classe

byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
byte[] secondArray = new BigInteger("1111000011110001", 2).toByteArray();
if (Arrays.equals(array, secondArray))
{
    System.out.println("Yup, they're the same!");
}

64voto

Ernest Friedman-Hill Points 56605

Découvrez la famille statique de méthodes java.util.Arrays.equals() . Il y en a un qui fait exactement ce que vous voulez.

11voto

jswolf19 Points 2007

Java ne surcharge pas les opérateurs, vous aurez donc généralement besoin d'une méthode pour les types non basiques. Essayez la méthode Arrays.equals () .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X