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)?它基于这样一个假设,即小值比其他整数出现的频率要高得多,因此缓存它们是有意义的。