В вашем примере у вас есть:
if (new BigInteger("1111000011110001", 2).toByteArray() == array)
При работе с объектами ==
в java сравнивает ссылочные значения . Вы проверяете, совпадает ли ссылка на массив, возвращаемый toByteArray()
, со ссылкой в array
, что, конечно, никогда не может быть истинным. Кроме того, классы массива не переопределяют .equals()
, поэтому поведение соответствует Object.equals()
, которое также сравнивает только контрольные значения.
Для сравнения содержимого двух массивов методы сравнения статических массивов предоставляются классом Arrays
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!");
}