为什么byte []比较与十六进制比较不同? 我正在计算返回类型为byte []
的相同字符串的哈希值byte[] hash1 = md5sum('3078RUR26')
byte[] hash2 = md5sum('3078RUR26')
我得到[B @ 7852e92和[B @ 4e25154f。
但是,如果我使用相同的函数并在hash1和hash2之后执行按位Integer.toHexString,我会得到5ddff3704bc83a675f3f51671da9c2c这两个语句。为什么呢?
答案 0 :(得分:1)
关键是这个方法md5sum
很可能每次都会创建一个新数组来返回结果数据!
新数组意味着:一个新的引用,因此,当您使用==比较hash1和hash2时;或者当您只是打印两个引用时,您会被告知:这是两个不同的引用。因为,最后,你的内存中分配了两个数组。
换句话说:两个数组具有相同内容的事实并不能使数组引用相等!