Ich habe ein Byte-Array mit einer bekannten Binärsequenz. Ich muss bestätigen, dass die Binärsequenz so ist, wie sie sein soll. Ich habe es .equals
zusätzlich versucht ==
, aber keiner hat funktioniert.
byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
System.out.println("the same");
} else {
System.out.println("different'");
}
==
vergleicht primitive Werte nur zuAntworten:
In Ihrem Beispiel haben Sie:
Beim Umgang mit Objekten
==
vergleicht Java in Java Referenzwerte . Sie überprüfen, ob der Verweis auf das von zurückgegebene Array mittoByteArray()
dem Verweis in übereinstimmtarray
, der natürlich niemals wahr sein kann. Außerdem werden Array-Klassen nicht überschrieben,.equals()
sodass das Verhalten dasjenige ist, beiObject.equals()
dem auch nur die Referenzwerte verglichen werden.Um den Inhalt von zwei Arrays zu vergleichen , werden statische Array-Vergleichsmethoden von der Arrays-Klasse bereitgestellt
quelle
Schauen Sie sich die statische
java.util.Arrays.equals()
Methodenfamilie an. Es gibt einen, der genau das macht, was Sie wollen.quelle
Java überlädt keine Operatoren, daher benötigen Sie normalerweise eine Methode für nicht grundlegende Typen. Probieren Sie die Methode Arrays.equals () aus .
quelle
Sie können beide
Arrays.equals()
und verwendenMessageDigest.isEqual()
. Diese beiden Methoden weisen jedoch einige Unterschiede auf.MessageDigest.isEqual()
ist eine zeitkonstante Vergleichsmethode undArrays.equals()
nicht zeitkonstant. Wenn Sie sie in einer Sicherheitsanwendung verwenden, kann dies zu Sicherheitsproblemen führen.Die Details für den Unterschied können unter Arrays.equals () vs MessageDigest.isEqual () gelesen werden.
quelle
Natürlich ist die akzeptierte Antwort von Arrays.equal (Byte [] zuerst, Byte [] zweitens) korrekt. Ich arbeite gerne auf einer niedrigeren Ebene, konnte jedoch keine effiziente Funktion auf niedriger Ebene finden, um Gleichheitstestbereiche durchzuführen. Ich musste meine eigenen aufschlagen, wenn jemand es braucht:
quelle
Da ich zwei Arrays für einen Unit-Test vergleichen wollte und zu dieser Antwort kam, dachte ich, ich könnte sie teilen.
Sie können es auch tun mit:
Weitere Informationen finden Sie unter Vergleichen von Arrays in JUnit-Zusicherungen .
quelle