identical?

added
1.0

ns
clojure.core

type
function

(identical? x y)

Tests if 2 arguments are the same object

                user=> (def x 1)
#'user/x
user=> (identical? x x)
true
user=> (identical? x 1)
true
user=> (identical? x 2)
false
user=> (identical? x ((constantly 1) 8))
true
user=> (identical? 'a 'a)
false
            
                user=> (def x {:foo 1, :bar -3})
#'user/x
user=> (def y {:foo 1, :bar -3})
#'user/y
;; Values are equal, but different objects were constructed
user=> (= x y)
true
user=> (identical? x y)
false

            
                ; Java wrapper class caching
; details at: https://www.owasp.org/index.php/Java_gotchas#Immutable_Objects_.2F_Wrapper_Class_Caching
user=> (identical? 128 128)
false
user=> (identical? 127 127)
true
user=> (identical? -127 -127)
true
user=> (identical? -128 -128)
true
user=> (identical? -130 -130)
false
            
                user=> (def a (String. "abc"))
;;=> #'user/a

user=> (def b (String. "abc"))
;;=> #'user/b

=> (identical? a b)
;;=> false
;; initialised 2 new objects

user=> (def a "abc")
;;=> #'user/a

user=> (def b "abc")
;;=> #'user/b

=> (identical? a b)
;;=> true
;; refers same objects(address), look String pooling