In the documentation we have
Note that boxing of numbers does not preserve identity
but the next examples give different results
val number1 = 127
val b1 : Int? = number1
val b2 : Int? = number1
print(b1 === b2) // this prints true
val number2 = 128
val c1 : Int? = number2
val c2 : Int? = number2
print(c1 === c2) // this prints false
In numbers greater than 127 works as expected but not when is above 128 (8 bits), why?
This article explains it: http://javapapers.com/java/java-integer-cache/
The basic idea is that the Java standard lib uses a cache for values between -128 and 127, therefore they always refer to the same Integer object (by identity).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With