Saya memiliki array byte dengan ~ urutan biner yang dikenal di dalamnya. Saya perlu mengonfirmasi bahwa urutan biner adalah sebagaimana mestinya. Saya telah mencoba .equals
sebagai tambahan ==
, tetapi tidak ada yang berhasil.
byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
System.out.println("the same");
} else {
System.out.println("different'");
}
==
membandingkan nilai primitif hanyaJawaban:
Dalam contoh Anda, Anda memiliki:
Saat berhadapan dengan objek,
==
di java membandingkan nilai referensi . Anda memeriksa untuk melihat apakah referensi ke larik yang dikembalikan olehtoByteArray()
sama dengan referensi yang dipegangarray
, yang tentu saja tidak akan pernah benar. Selain itu, kelas array tidak menimpa.equals()
sehingga perilakunyaObject.equals()
juga hanya membandingkan nilai referensi.Untuk membandingkan isi dari dua array, metode perbandingan array statis disediakan oleh kelas Array
sumber
Lihat
java.util.Arrays.equals()
keluarga metode statis . Ada satu yang melakukan apa yang Anda inginkan.sumber
Java tidak membebani operator, jadi biasanya Anda memerlukan metode untuk tipe non-dasar. Coba metode Arrays.equals () .
sumber
Anda dapat menggunakan keduanya
Arrays.equals()
danMessageDigest.isEqual()
. Kedua metode ini memiliki beberapa perbedaan.MessageDigest.isEqual()
adalah metode perbandingan waktu konstan danArrays.equals()
non waktu konstan dan mungkin membawa beberapa masalah keamanan jika Anda menggunakannya dalam aplikasi keamanan.Detail untuk perbedaannya dapat dibaca di Arrays.equals () vs MessageDigest.isEqual ()
sumber
Tentu saja, jawaban yang diterima dari Arrays.equal (byte [] pertama, byte [] detik) benar. Saya suka bekerja di level yang lebih rendah, tetapi saya tidak dapat menemukan fungsi efisien level rendah untuk melakukan rentang uji kesetaraan. Saya harus menyiapkan sendiri, jika ada yang membutuhkan:
sumber
Karena saya ingin membandingkan dua array untuk Tes unit dan saya sampai pada jawaban ini, saya pikir saya bisa berbagi.
Anda juga dapat melakukannya dengan:
Dan Anda dapat memeriksa Membandingkan array di pernyataan JUnit untuk info lebih lanjut.
sumber