Eu tenho uma matriz de bytes com uma sequência binária conhecida. Preciso confirmar se a sequência binária é o que deveria ser. Eu tentei .equals
além ==
, mas nenhum funcionou.
byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
System.out.println("the same");
} else {
System.out.println("different'");
}
==
compara valores primitivos apenas fyiRespostas:
Em seu exemplo, você tem:
Ao lidar com objetos,
==
em java compara valores de referência . Você está verificando se a referência ao array retornado portoByteArray()
é a mesma que a referência mantidaarray
, o que, obviamente, nunca pode ser verdadeiro. Além disso, as classes de array não sobrescrevem,.equals()
então o comportamento é aqueleObject.equals()
que também compara apenas os valores de referência.Para comparar o conteúdo de duas matrizes, métodos de comparação de matrizes estáticas são fornecidos pela classe Arrays
fonte
Confira a
java.util.Arrays.equals()
família estática de métodos. Existe um que faz exatamente o que você deseja.fonte
Java não sobrecarrega os operadores, então você geralmente precisará de um método para tipos não básicos. Experimente o método Arrays.equals () .
fonte
Você pode usar
Arrays.equals()
eMessageDigest.isEqual()
. Porém, esses dois métodos têm algumas diferenças.MessageDigest.isEqual()
é um método de comparação de constante deArrays.equals()
tempo e não e pode trazer alguns problemas de segurança se você usá-lo em um aplicativo de segurança.Os detalhes da diferença podem ser lidos em Arrays.equals () vs MessageDigest.isEqual ()
fonte
Obviamente, a resposta aceita de Arrays.equal (byte [] primeiro, byte [] segundo) está correta. Gosto de trabalhar em um nível inferior, mas não consegui encontrar uma função eficiente de nível inferior para realizar intervalos de teste de igualdade. Eu tive que preparar o meu próprio, se alguém precisar:
fonte
Como eu queria comparar dois arrays para um teste de unidade e cheguei a esta resposta, pensei que poderia compartilhar.
Você também pode fazer isso com:
E você pode verificar em Comparando arrays em asserções JUnit para obter mais informações.
fonte