字节比较与hexstring

时间:2016-07-20 12:07:36

标签: java hash md5

为什么byte []比较与十六进制比较不同? 我正在计算返回类型为byte []

的相同字符串的哈希值
byte[]  hash1 = md5sum('3078RUR26')
byte[]  hash2 = md5sum('3078RUR26')

我得到[B @ 7852e92和[B @ 4e25154f。

但是,如果我使用相同的函数并在hash1和hash2之后执行按位Integer.toHexString,我会得到5ddff3704bc83a675f3f51671da9c2c这两个语句。为什么呢?

1 个答案:

答案 0 :(得分:1)

关键是这个方法md5sum很可能每次都会创建一个新数组来返回结果数据!

新数组意味着:一个新的引用,因此,当您使用==比较hash1和hash2时;或者当您只是打印两个引用时,您会被告知:这是两个不同的引用。因为,最后,你的内存中分配了两个数组。

换句话说:两个数组具有相同内容的事实并不能使数组引用相等!