在java中将字节转换为blob并再次从blob转换为字节时会产生不同的结果

在java中将字节转换为blob并再次从blob转换为字节时会产生不同的结果,java,Java,我有一个将指纹模板转换为字节数组(序列化)的任务。然后,我比较了将两个字节数组转换为blob之前和从字节数组转换回blob之后的情况。当我打印它们时,它们会给我不同的结果。 这是密码 `Blob blob = con.createBlob(); blob.setBytes(1, enroller.getTemplate().serialize()); System.out.println(enroller.getTemplate().serialize()); //prints [B@53de7

我有一个将指纹模板转换为字节数组(序列化)的任务。然后,我比较了将两个字节数组转换为blob之前和从字节数组转换回blob之后的情况。当我打印它们时,它们会给我不同的结果。 这是密码

`Blob blob = con.createBlob();
blob.setBytes(1, enroller.getTemplate().serialize());
System.out.println(enroller.getTemplate().serialize());
//prints [B@53de73a3

int blobLength = (int) blob.length();  
byte[] blobAsBytes = blob.getBytes(1, blobLength);
System.out.println(blobAsBytes);
//prints [B@3179fd59`
有什么想法吗


编辑:我也尝试过使用array.equals(),它给了我一个错误的输出。

为什么你会期望它们是相同的?在字节数组上使用
toString()
方法进行打印,这将为您提供类型信息+与内存位置相关(但不一定)的数字(当
toString()
未被重写时,它实际上是
hashCode()


如果要比较这些,请在两字节数组上使用
equals()
。或者逐个比较元素(首先检查长度,以避免在大小不匹配时进行不必要的遍历)

打印的输出是“java对象id”,而不是数组的内容

您不是在比较数组的内容,而是它们的引用


使用包含各种基元类型的重载方法。

哦,是的,我也尝试过。它给了我一个“假”输出。有什么办法使他们平等吗?我终于在你的答案中找到了一些线索。谢谢,布莱恩:我也试过这么做,结果输出错误。我在这里做从字节到blob的正确转换吗?如果你在那里得到的是false,那么内容是不相等的。在这种情况下,您可以尝试使用for循环对两个数组进行迭代,并在不相等的第一个元素处停止。或者在调试器中查看数组的内容。。。