You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure中Java字节数组的意外相等性语义问题咨询

Clojure中byte数组相等性的行为说明

这是Clojure的预期行为,不需要提交Bug报告。

为什么Test 1返回false?

Clojure的=运算符对Java原生数组(包括byte数组)采用引用相等的判断逻辑——只有当两个数组是同一个对象实例时才返回true。你创建的是两个独立的byte数组对象,它们的内存引用不同,所以=返回false。

为什么Test 2返回true?

将byte数组转为seq后,=会切换为值语义的比较:逐个检查序列中的元素值是否完全一致。两个序列的元素都是(0 0 0 0),所以返回true。

额外的数组内容比较方式

如果需要直接比较byte数组的内容是否相等,推荐使用Java标准库的java.util.Arrays/equals方法:

(java.util.Arrays/equals (byte-array [0 0 0 0]) (byte-array [0 0 0 0])) ;; => true

内容的提问来源于stack exchange,提问作者Ioannis Mourginakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:52:02