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 censée être. J'ai essayé .equals
en plus ==
, mais aucun 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'");
}
==
compare les valeurs primitives juste pour fyiRéponses:
Dans votre exemple, vous avez:
Lorsqu'il s'agit d'objets,
==
en java compare les valeurs de référence . Vous vérifiez si la référence au tableau renvoyé partoByteArray()
est la même que la référence contenue dansarray
, ce qui bien sûr ne peut jamais être vrai. De plus, les classes de tableaux ne remplacent pas,.equals()
donc le comportement est celuiObject.equals()
dont ne compare également que les valeurs de référence.Pour comparer le contenu de deux tableaux, des méthodes de comparaison de tableaux statiques sont fournies par la classe Arrays
la source
Découvrez la
java.util.Arrays.equals()
famille de méthodes statiques . Il y en a un qui fait exactement ce que vous voulez.la source
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 () .
la source
Vous pouvez utiliser à la fois
Arrays.equals()
etMessageDigest.isEqual()
. Ces deux méthodes présentent cependant quelques différences.MessageDigest.isEqual()
est une méthode de comparaison à constante de temps etArrays.equals()
n'est pas constante de temps et peut entraîner des problèmes de sécurité si vous l'utilisez dans une application de sécurité.Les détails de la différence peuvent être lus sur Arrays.equals () vs MessageDigest.isEqual ()
la source
Bien sûr, la réponse acceptée de Arrays.equal (byte [] first, byte [] second) est correcte. J'aime travailler à un niveau inférieur, mais je n'ai pas pu trouver une fonction efficace de bas niveau pour effectuer des plages de test d'égalité. Je devais créer le mien, si quelqu'un en avait besoin:
la source
Puisque je voulais comparer deux tableaux pour un test unitaire et que je suis arrivé sur cette réponse, je pensais pouvoir partager.
Vous pouvez également le faire avec:
Et vous pouvez consulter Comparaison des tableaux dans les assertions JUnit pour plus d'informations.
la source