Clojure';完全一样吗?仅当所比较的对象实际上是同一实例时,函数才会返回true?

Clojure';完全一样吗?仅当所比较的对象实际上是同一实例时,函数才会返回true?,clojure,Clojure,我想 (identical? x y) 仅当x和y都是同一实例时才返回true?那么这个呢: (def moo 4) (def cow 4) (identical? moo cow) true 但我认为moo和cow都是整数“4”的单独实例?有什么好处 在JVM中,-128和127之间的两个相等整数总是相同的,因为它保持不变 这意味着-128和127之间的两个相等整数始终是Integer类的同一个实例 尝试比较不同的整数: (相同?4(+2));真的 (相同?127);真的 (相同?128

我想

(identical? x y)
仅当x和y都是同一实例时才返回true?那么这个呢:

(def moo 4)
(def cow 4)

(identical? moo cow)
true

但我认为moo和cow都是整数“4”的单独实例?有什么好处

在JVM中,
-128
127
之间的两个相等整数总是相同的,因为它保持不变

这意味着-128和127之间的两个相等整数始终是
Integer
类的同一个实例

尝试比较不同的整数:

(相同?4(+2));真的
(相同?127);真的
(相同?128);假的

有关更多信息,请参阅。

谢谢,为什么JVM只对第一个字节执行此操作?(即-128到127)?它基于这样一个假设,即小值比其他整数出现的频率要高得多,因此缓存它们是有意义的。